I would advise reading about datatemplates. I have not found an easy way to dynamically put an image and text on a button in WPF, generally the way to do it is to create the placeholders in XAML.
So your button would be described something like this:
<button>
<grid>
<grid.rowdefinitions>
<rowdefinition />
<rowdefinition />
</grid.rowdefinitions>
<image grid.row="1" x:name="ImagePlaceHolder" xmlns:x="#unknown" />
<textblock grid.row="2" x:name="TextPlaceHolder" xmlns:x="#unknown" />
</grid>
</button>
Then you could refer to those controls at runtime.
However, a better solution would be to have two dataclasses
ButtonContentWithImage
ButtonContentWithoutImage
Then set the datacontext of the button to one of those classes and use Datatemplates in the resources of the WPF window/control/page to display them properly.
Have a read on some of these links:
http://stackoverflow.com/questions/1933127/creating-an-imagetext-button-with-a-control-template[
^]
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/1f4b6cf8-fe34-43be-bef7-e01c2a4f1b04[
^]
http://wpftutorial.net/DataTemplates.html[
^]