【问题标题】:Binding a collection to WPF ComboBox and disable some items将集合绑定到 WPF ComboBox 并禁用某些项目
【发布时间】:2012-01-27 13:13:53
【问题描述】:
<Window.Resources>
    <DataTemplate x:Key="IpInfoTemplate">
        <DockPanel>
            <TextBlock Text="{Binding Path=InterfaceName}" DockPanel.Dock="Left" Margin="0,0,10,0" />
            <TextBlock Text="{Binding Path=Address}"/>
        </DockPanel>
    </DataTemplate>
</Window.Resources>

<ComboBox ItemTemplate="{StaticResource IpInfoTemplate}"
      ItemsSource="{Binding Source={x:Static WpfApplication1:App.IpInfoList}, Mode=OneWay}">    
</ComboBox>

此代码已将App.IpInfoList 绑定到 ComboBox。

IpInfo 类有一个布尔属性 Enabled。要求是在对应IpInfo.Enable==false的时候设置ComboBoxItem.IsEnabled=false(这样用户就不能选择了)。

我希望所有代码都是用 XAML 编写的。

【问题讨论】:

    标签: xaml binding


    【解决方案1】:
    <ComboBox ItemTemplate="{StaticResource IpInfoTemplate}" 
              ItemsSource="{Binding Source={x:Static WpfApplication1:App.IpInfoList}, Mode=OneWay}">
        <ComboBox.ItemContainerStyle>
            <Style TargetType="{x:Type ComboBoxItem}">
                <Setter Property="IsEnabled" Value="{Binding Enabled}"/>
            </Style>
        </ComboBox.ItemContainerStyle>
    </ComboBox>
    

    它将ComboBoxItem.IsEnabled 属性绑定到您的IpInfo.Enabled 属性

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 2010-09-17
      • 2014-01-26
      • 2011-03-01
      • 2011-01-10
      • 1970-01-01
      • 2018-09-06
      • 2012-11-15
      相关资源
      最近更新 更多