当选择的索引为-1或者selecteditem为null时,我试图显示默认值(甚至是NO值)。这通常可以正常工作,但是当我启用IsSynchronizedWithCurrentItem并将其设置为True时,我的DataTable中的第一个值会显示出来。我怎样才能同时拥有IsSynchronizedWithCurrentItem =“True”并在加载时显示无/默认值。
我的组合框XAML:
<GroupBox Name="ClientGroup" Header="Client" Margin="63,182,0,177" FontSize="14" HorizontalAlignment="Left" Width="298">
<ComboBox Name="Supplier" Grid.IsSharedSizeScope="True" ItemsSource="{Binding}" IsEditable="True" Text="Please Choose..." TextSearch.TextPath="CompanyName" IsSynchronizedWithCurrentItem="True" Height="23" VerticalAlignment="Top" Margin="0,6,6,0" FontSize="11" StaysOpenOnEdit="True">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,5,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="CompanyName" />
<ColumnDefinition Width="Auto" SharedSizeGroup="EIC" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding CompanyName}" Grid.Column="0" />
<TextBlock Text="{Binding EIC, StringFormat=' ({0})'}" Grid.Column="1" FontFamily="Courier New" FontWeight="Bold" FontSize="12" />
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</GroupBox>
我的CS代码背后:
ClientGroup.DataContext = (new CompanyDealsDataSetTableAdapters.CompanyTableAdapter()).GetData();
当我启动应用程序时,它会自动选择数据表中的第一行。当我删除IsSynchronizedWithCurrentItem时,它按预期工作。
有人有任何解决方案吗?
答案 0 :(得分:1)
找到了答案,这比我想象的要简单得多。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Supplier.Text = null;
}
这似乎有效,并且我的所有绑定字段都设置为null /默认值:)。