2014-09-30 76 views
0

我做了一個自定義組合框,其中我有一個TextBlock(名爲mySelectedContent)來顯示所選項目和一個文本框以在「IsEditable」模式下進行編輯。我有一個正在正確拍攝的MultiDataTrigger,但是,我無法「捕捉」所選項目的文本並將其放入TextBlock中。應該如何安裝正確的表達來代替「???」。非常感謝!WPF組合框選定的項目文本

這裏是觸發(我主要表示觸發器的一部分,因爲它在這僅僅是問題)的代碼:

<ComboBox.Resources>  
    <Style x:Key="myComboBox" TargetType="{x:Type ComboBox}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ComboBox}"> 
        <Grid> 
         <ToggleButton> 
          ... 
         </ToggleButton> 
         <TextBlock 
          Name="mySelectedContent" 
          .../> 
         <TextBox x:Name="myEditableTextBox" 
          .../> 
         <Popup> 
          ... 
         </Popup> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           ... 
          </MultiDataTrigger.Conditions> 
          <MultiDataTrigger.Setters> 
           <Setter TargetName="myEditableTextBox" Property="Visibility" Value="Hidden"/> 
           <Setter TargetName="mySelectedContent" Property="Visibility" Value="Visible"/> 
           <Setter TargetName="mySelectedContent" Property="Text" Value="???"/> 
          </MultiDataTrigger.Setters> 
         </MultiDataTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ComboBox.Resources> 
+1

如果Value是接受綁定,則可以執行Value =「{Binding ElementName = MyEditableTextBox Path = Text}」,但事實並非如此:) 因此,請嘗試在TextBox中使用Microsoft Interaction來更新您的selectedContent 或看到此帖[高級MVVM方案](http://msdn.microsoft.com/en-us/library/gg405494(v = pandp.40).aspx) – Younes 2014-09-30 20:12:55

+0

嘗試{TemplateBinding SelectedValue}爲「Value」綁定「文本」屬性。 – 2014-10-01 05:12:40

+0

Vibhore,我試過了,但是VS說:「表達式類型不是有效的Style值」。 – user3952846 2014-10-01 11:17:30

回答

0

它與cYounes的第一個建議解決。我用:

值= {綁定的ElementName = MyEditableTextBox路徑=文本}

和它的作品如預期!

謝謝!

0

這就是這樣,當你根本就已經使用Tag屬性與2號線輕鬆獲得價值太多的工作:

在XAML

<ComboBoxItem Content="This Value" Tag="This Value"/> 

然後:

GetValue=ComboBoxName.SelectedItem.Tag.ToString()

會給你「This Value」而不是 「System.Windows.Controls.ComboBoxItem:This Value」

更簡單,更快,更省時。