我有一個 ComboBox,它應該根據條件顯示不同的值。
如果 SelectedValue 的屬性Name或Email不為空且不為空,我想顯示這些。
如果以上不正確,我想回退并顯示 SelectedValue's Username,這永遠不會為 null 或為空。
這就是我迄今為止所擁有的。
<ctrls:RadComboBoxExtended Grid.Row="0" Grid.Column="1" ItemsSource="{Binding CurrentValue.LIST_OF_USERS}" SelectedValue="{Binding CurrentValue.User}" focus:FocusExtension.IsFocused="{Binding Focuspoint}">
<ctrls:RadComboBoxExtended.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Visibility>
<MultiBinding Converter="{StaticResource MultiNullOrEmptyStrToVisibility}" ConverterParameter="1">
<Binding Path="Name"/>
<Binding Path="Email"/>
</MultiBinding>
</TextBlock.Visibility>
<Run Text="{Binding Name}"/>
<Run Text="("/><Run Text="{Binding Email}"/><Run Text=")"/>
</TextBlock>
</DataTemplate>
</ctrls:RadComboBoxExtended.ItemTemplate>
</ctrls:RadComboBoxExtended>
以上 XAML 顯示所有具有Name和Email正確的用戶。
我將如何為此顯示“其他分支”?截至目前,不符合我的轉換器條件的用戶在 ComboBox 中為空白。我怎樣才能顯示這些?
uj5u.com熱心網友回復:
最簡單的方法是TextBlock用StackPanelor包圍Grid并在TextBlock那里放置另一個,設定ConverterParameter="10"和處理它,以便只有一個TextBlocks 可見。
另一種可能性是使用ItemTemplateSelector來定義DataTemplate如果RadComboBoxExtended有這樣的屬性應該使用哪個。
<ctrls:RadComboBoxExtended Grid.Row="0" Grid.Column="1" ItemsSource="{Binding CurrentValue.LIST_OF_USERS}" SelectedValue="{Binding CurrentValue.User}" focus:FocusExtension.IsFocused="{Binding Focuspoint}">
<ctrls:RadComboBoxExtended.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>
<TextBlock.Visibility>
<MultiBinding Converter="{StaticResource MultiNullOrEmptyStrToVisibility}" ConverterParameter="1">
<Binding Path="Name"/>
<Binding Path="Email"/>
</MultiBinding>
</TextBlock.Visibility>
<Run Text="{Binding Name}"/>
<Run Text="("/><Run Text="{Binding Email}"/><Run Text=")"/>
</TextBlock>
<TextBlock Text="{Binding Username}">
<TextBlock.Visibility>
<MultiBinding Converter="{StaticResource MultiNullOrEmptyStrToVisibility}" ConverterParameter="10">
<Binding Path="Name"/>
<Binding Path="Email"/>
</MultiBinding>
</TextBlock.Visibility>
</TextBlock>
</StackPanel>
</DataTemplate>
</ctrls:RadComboBoxExtended.ItemTemplate>
</ctrls:RadComboBoxExtended>
uj5u.com熱心網友回復:
我會在 ViewModel 中選擇姓名 電子郵件與用戶名。(ViewModel 的職責之一是以方便的格式為 View 提供資料)
public string SelectionText => String.IsNullOrEmpty(Name) && String.IsNullOrEmpty(Email)
? Username
: $"{Name} ({Email})" ;
不需要更短的 DataTemplate 和 MultiValueConverter
<ctrls:RadComboBoxExtended Grid.Row="0" Grid.Column="1" ItemsSource="{Binding CurrentValue.LIST_OF_USERS}" SelectedValue="{Binding CurrentValue.User}" focus:FocusExtension.IsFocused="{Binding Focuspoint}">
<ctrls:RadComboBoxExtended.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding SelectionText}"/>
</DataTemplate>
</ctrls:RadComboBoxExtended.ItemTemplate>
</ctrls:RadComboBoxExtended>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378595.html
上一篇:顯示Swi-prolog回溯?
下一篇:帶角半徑的WPF插入陰影
