2011-12-25 30 views
7
<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にバインドしました。コレクションをWPF ComboBoxにバインドして一部のアイテムを無効にする

IpInfoクラスにはブールプロパティEnabledがあります。必要なのは、対応するIpInfo.Enable==falseの場合にComboBoxItem.IsEnabled=falseと設定する(ユーザーが選択できないようにする)ことです。

すべてのコードがXAMLで書かれていることを希望します。

答えて

23
<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> 

は、それはあなたのIpInfo.Enabledプロパティに

+0

グレートComboBoxItem.IsEnabledプロパティをバインドし、それが動作します! – Gqqnbig

関連する問題