我有一個包含2個ComboBoxes和2個TextBox的UserControl。我在MainWindow中有兩個UserControl實例。在UserControl實例中設置ComboBox屬性
UserControl的第二個實例的可見性綁定到放置在MainWindow中的CheckBox - 根據CheckBox.IsChecked屬性,UserControl變爲隱藏/可見。
CheckBox本身的IsChecked和IsEnabled屬性綁定到UserControl的第一個實例中的第一個ComboBox的SelectedItem屬性 - 例如:如果值爲null,它們將爲false。我使用的是MVVM,所以這個綁定是在ViewModel部分定義的。
我的問題是 - 有沒有辦法通過MainWindow中的XAML訪問UserControl的組合框之一的SelectedIndex屬性,所以當CheckBox是UnChecked時,除了UserControl的第二個實例將轉向隱藏起來,第二個實例中組合框的SelectedIndex將變爲0?
UserControl的XAML:
<ComboBox x:Name="comboField" ItemsSource="{Binding Fields}"
DisplayMemberPath="Key"
SelectedItem="{Binding FieldComboSelectedItem, Mode=TwoWay}"/>
<TextBox x:Name="tbFirstValue"/>
<ComboBox x:Name="comboQueryType"
SelectedItem="{Binding QueryTypeComboSelectedItem, Mode=TwoWay}"/>
<TextBox x:Name="tbSecondValue"/>
的2個實例,並在主窗口XAML的複選框:
<local:FilterUC x:Name="firstFilter"/>
<local:FilterUC x:Name="secondFilter">
<local:FilterUC.Style>
<Style TargetType="{x:Type local:FilterUC}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked,
ElementName=cbTwoFields}" Value="False">
<Setter Property="Visibility" Value="Hidden"/>
<!--This is what I want to achieve:-->
<!--<Setter ElementName="comboField"
Property="SelectedIndex" Value="0" />-->
</DataTrigger>
</Style.Triggers>
</Style>
</local:FilterUC.Style>
</local:FilterUC>
<CheckBox x:Name="cbTwoFields" Content="Add filter"
IsEnabled="{Binding ElementName=firstFilter,
Path=DataContext.AddFilterEnable}"
IsChecked="{Binding ElementName=firstFilter,
Path=DataContext.AddFilterChecked}"/>
非常感謝您的快速回答。 我已經測試過提出的解決方案,它應該已經工作。看來 ' ' 以某種方式被忽略。 (儘管第一個行爲與預期相同)。 我試圖找到解決方法,但沒有成功。我會感謝您的進一步幫助或一個小小的演示。 非常感謝。 –
user3306382