0

ビューモデル内の単一のプロパティに複数のコントロール値をバインドするにはどうすればよいですか?

無効なコード:

        <MultiBinding Converter="{StaticResource myMultiConverter}">
            <!--Convert From these element-->
            <From ElementName="check1" Path="IsChecked" />
            <From ElementName="check2" Path="IsChecked" />
            <From ElementName="check3" Path="IsChecked" />
            <From ElementName="check4" Path="IsChecked" />
            <!--To Viewmodel Property-->
            <To ElementName="myViewModelProperty" />
        </MultiBinding>

        <CheckBox Name="check1"></CheckBox>
        <CheckBox Name="check2"></CheckBox>
        <CheckBox Name="check3"></CheckBox>
        <CheckBox Name="check4"></CheckBox>
4

1 に答える 1

0

通常どおりプロパティにバインドします

<CheckBox Name="check1" IsChecked="{Binding Path=myViewModelProperty}" />
<CheckBox Name="check2" IsChecked="{Binding Path=myViewModelProperty}" />
<CheckBox Name="check3" IsChecked="{Binding Path=myViewModelProperty}" />
<CheckBox Name="check4" IsChecked="{Binding Path=myViewModelProperty}" />

次に、 ViewModel で:

    public Boolean myViewModelProperty
    {
        get {  ...       }

        set {  ...       }
    }

必要に応じてViewModelでも:

this.RaisePropertyChanged<Boolean>(() => this.myViewModelProperty);

必要に応じて、1 つのプロパティにいくつでも要素の値をバインドできます (同じプロパティを持つ 4 つのチェックボックスを理解していなくても ^^)

MultiBinding は、1 つの要素の値を多数の ViewModel プロパティにバインドするために使用されます。

編集:4つのチェックボックスを列挙型に変換する必要があるという事実を考慮して:

<CheckBox Name="check1" IsChecked="{Binding Path=myViewModelProperty1}" />
<CheckBox Name="check2" IsChecked="{Binding Path=myViewModelProperty2}" />
<CheckBox Name="check3" IsChecked="{Binding Path=myViewModelProperty3}" />
<CheckBox Name="check4" IsChecked="{Binding Path=myViewModelProperty4}" />


    public Boolean myViewModelProperty1
    {
        get 
        { 
            return this.b1;  
        }
        set 
        { 
            this.b1  =value;
            this.EvaluateMyEnum();
        }
    }

    public Boolean myViewModelProperty2
    {
        get 
        { 
            return this.b2;  
        }
        set 
        { 
            this.b2  =value;
            this.EvaluateMyEnum();
        }
    }

    public Boolean myViewModelProperty3
    {
        get 
        { 
            return this.b2;  
        }
        set 
        { 
            this.b2  =value;
            this.EvaluateMyEnum();
        }
    }

    public Boolean myViewModelProperty4
    {
        get 
        { 
            return this.b4;  
        }
        set 
        { 
            this.b4  =value;
            this.EvaluateMyEnum();
        }
    }

    void EvaluateMyEnum()
    {
        this.MyViewModelEnum = ......;
        this.RaisePropertyChanged<MyEnum>(() => this.myViewModelEnum);
    }
于 2013-03-13T17:46:10.757 に答える