2011-11-21 47 views
0

我有一種情況: DataGrid with TemplateColumn。模板包含帶有CheckBox和TextBox的堆棧面板。我想要的是,當我按CheckBox然後TextBox這是在同一個StakcPanel設置值爲1. 因此,在簡單的 複選框 - > IsChecked == true - >設置文本框的值爲1(與複選框相同的StackPanel上的文本框)在同一個stackPanel上設置控制值WPF

我嘗試使用RelativeSource但不工作。 感謝您的幫助。

回答

1

那麼你可以綁定TextBox的TextForTextBox的內容,並將Checked狀態綁定到Checked。在您的視圖模型,你會:做

private string _text; 
    private bool _checked; 

    public string TextForTextBox 
    { 
     get { return _text; } 
     private set { _text = value;} 
    } 

    public bool Checked 
    { 
     get { return _checked; } 
     set 
     { 
      if (_checked != value) 
      { 
       _checked = value; 
       Text = _checked ? 1 : = 0; 
       PropertyChanged("Checked"); 
       PropertyChanged("TextForTextBox"); 
      } 
     } 
    } 

這是假設你有一個實現INotfiyPropertyChanged一個視圖模型。

編輯 代碼以純XAML更改此:

<Grid> 
    <StackPanel> 
     <CheckBox x:Name="check" /> 
     <TextBox> 
      <TextBox.Style> 
       <Style> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=check, Path=IsChecked}" Value="True"> 
          <Setter Property="TextBox.Text" Value="1" /> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding ElementName=check, Path=IsChecked}" Value="False"> 
          <Setter Property="TextBox.Text" Value="0" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </TextBox.Style> 
     </TextBox> 
    </StackPanel> 
</Grid> 
+0

感謝的答案,但我尋找更多的XAML的事情。我不想在/ VM後面使用任何代碼。 – Patryk

+0

好於檢查編輯:) – MBen

+0

非常適合你!那是我尋找的。 – Patryk