3

私はこのモデルを持っています:

public class Option : BindableBase
{
    private bool _enabled;
    public bool Enabled
    {
        get
        {
            return _enabled;
        }
        set
        {
            SetProperty(ref _enabled, value);
        }
    }

    private string _value;
    public string Value
    {
        get
        {
            return _value;
        }
        set
        {
            SetProperty(ref _value, value);
        }
    }
}

私のビューモデルでは、Optionstypeのリストを取得しましたObservableCollection<Option>

この XAML コードを使用します。

<ComboBox Width="200"
          ItemsSource="{Binding Options}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Value}"/>
                <TextBlock Text="{Binding Enabled}"/>
            </StackPanel>
        </DataTemplate>
     </ComboBox.ItemTemplate>
     <ComboBox.ItemContainerStyle>
         <Style TargetType="ComboBoxItem">
             <Setter Property="IsEnabled" Value="{Binding Enabled}"/>
         </Style>
     </ComboBox.ItemContainerStyle>
 </ComboBox>

Optionリストにいくつか追加します。Enabledプロパティが設定されてtrueいるものもあれば、設定されていないものもあります。

ただし、プロパティを持つものは でfalse有効のままであり、ComboBoxそれらを選択できます (そうすべきではありません!)。このコード行を使用する場合:

 <Setter Property="IsEnabled" Value="false"/>

オプションは事実上無効になっています (どれも選択できません) が、何らかのバインディングを使用したいと考えています。誰かが私がここで間違っていることを説明できますか?

4

2 に答える 2

-1

代わりにパスを使用する必要があるかもしれません。これを試すことができます:

<Setter Property="IsEnabled" Value="{Binding Path=Enabled}"/>
于 2013-09-13T15:12:32.823 に答える