Arc*_*hie 12 wpf binding templates custom-controls
我想在里面创建带有图像和文字的按钮.例如,我会为"浏览文件夹"和"导入"等按钮使用不同的图像和文本.其中一个选择是使用模板.我看了一下simliar的问题
但有没有办法可以绑定图像源而不使用依赖属性或任何其他类?
谢谢
Mar*_*hal 44
它不一定非常复杂.像将StackPanel放在按钮内一样简单就可以了:
<Button>
<StackPanel>
<TextBlock>My text here</TextBlock>
<Image Source="some.jpg" Stretch="None" />
</StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)
然后,您可以配置StackPanel以控制文本的显示位置,对齐方式等.
小智 15
我添加了一些东西来很好地排列它们
<Button>
<StackPanel Orientation="Horizontal">
<Image Source="/ApplicationName;component/Images/MyImage.ico"/>
<Label Padding="0">My Button Text</Label>
</StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)
<Button>
<StackPanel Orientation="Horizontal">
<Image Source="Resources/add.png" Stretch="None" />
<TextBlock Margin="5,0,0,0">Add</TextBlock>
</StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)
小智 5
<Button x:Name="MyCoolButton"Width="200" Height="75">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="Pete-Brown-Silverlight-in-Action.png" Margin="5" Grid.Column="0" />
<StackPanel Grid.Column="1" Margin="5">
<TextBlock Text="Buy My Book!" FontWeight="Bold" />
<TextBlock Text="Pete is writing THE Silverlight 4 book" TextWrapping="Wrap" />
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
不。您会将其绑定Image.Source到什么?为此,您需要一个 DependencyProperty。当然,您也可以定义一个包含两个属性的普通类:Text和ImageSource或Uri,然后使用 DataTemplate 来呈现该类的实例,但这会编写更多代码,而且有点“臭”。
您不想使用依赖属性或自定义类的原因是什么?