WPF无法使绑定方案起作用

时间:2016-03-20 22:01:23

标签: wpf binding dependency-properties

我刚刚开始学习附加属性,看起来这可能会打开一个关于自定义UserControl可重用性的全新视角。

我希望设计一个简单的ComboBox控件,其中包含文本旁边的图像。我的UserControl包含ComboBox ItemTemplate TextBlock Image<ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Width="30" Height="30" Margin="0" Source="{Binding ???}" VerticalAlignment="Center"/> <TextBlock Margin="5" Text="{Binding ???}"/> </StackPanel> </DataTemplate> </ComboBox.ItemTemplate>

ItemsSource

ComboBox的{​​{1}}将是任何对象。我可以通过ItemsSource公开DependencyProperty而没有问题,但后来我不知道如何告诉DataTemplate ComboBox ItemSource绑定的哪些属性要将TextBlockImage绑定到。

的对象

以下是我的控件的示例用法:

<customControls:ImageComboBox HorizontalAlignment="Left" 
                                        Margin="24,197,0,0" 
                                        VerticalAlignment="Top" 
                                        Width="142" 
                                        Height="46"
                                        ComboBoxHint="Country"
                                        ComboBoxItemsSource="{Binding CountryCollection}"
                                        ComboBoxSelectedValue="{Binding SelectedCountry}"/>

1 个答案:

答案 0 :(得分:-1)

这取决于要设置为ItemsSource的集合中的项类型。比方说,类型是以下类。

public class CountryViewModel
{
    public BitmapImage Flag { get; set; }
    public string Name { get; set; }
}

然后相应的DataTemplate将如下;

<DataTemplate>
    <StackPanel Orientation="Horizontal">
        <Image Width="30" Height="30" Margin="0"
               VerticalAlignment="Center"
               Source="{Binding Flag}"/>
        <TextBlock Margin="5"
                   Text="{Binding Name}"/>
    </StackPanel>
</DataTemplate>

顺便说一下,正如Clemens所指出的,你不一定需要从头开始创建一个ComboBox。这是一个非常复杂的控制。您可以通过模板自定义其大部分外观。