Я пишу приложение, которое может переключать язык, используя this. У меня также есть COMBOX с двумя особенностями:Сброс привязки в коде
- питания Текст справки, если ни один элемент не выбран в выпадающем списке (см this)
- элементы выбираются с флажками (см this)
Мой COMBOBOX выглядит
<Grid>
<ComboBox x:Name="MyCB" SelectionChanged="OnCbObjectsSelectionChanged" ...>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}" Checked="OnCbObjectCheckBoxChecked" Unchecked="OnCbObjectCheckBoxChecked" Width="20" />
<TextBlock Text="{Binding Value}" Width="100" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock Visibility="{Binding SelectedItem, ElementName=MyCB, Converter={StaticResource Null2Vis}}"
IsHitTestVisible="False"
VerticalAlignment="Center"
Name="tbObjects"
Text="{ns:Loc Var1}"
FontSize="20"
Foreground="Gray"/>
</Grid>
Я временно деактивирован преобразователь с return Visibility.Visible;
, не е ffect.
Всякий раз, когда я проверяю некоторые флажки, свойство combobox.Text установлено, и привязка из ns: Loc переопределяется. Как я могу установить его снова в коде, если все флажки не отмечены?
private void OnCbObjectCheckBoxChecked(object sender, RoutedEventArgs e)
{
StringBuilder sb = new StringBuilder();
foreach (var cbObject in MyCB.Items)
if (cbObject.IsSelected)
sb.AppendFormat("{0}, ", cbObject.Value);
tbObjects.Text = sb.ToString().Trim().TrimEnd(',');
if (tbObjects.Text == "")
{
Binding myBinding = new Binding();
myBinding.Source = TranslationSource.Instance["Var1"]; // <- this does not work :/
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(tbObjects, TextBox.TextProperty, myBinding);
tbObjects.Foreground = new SolidColorBrush(Colors.Gray);
}
}
Когда все флажки сняты, текст в выпадающем списке отсутствует. Что мне не хватает?
Edit: Добавлен TextBox
элемент кода
К сожалению, ни одно из решений не работает. Текстовое поле остается пустым после снятия отметки со всех флажков. Даже если я устанавливаю текст вручную, он не изменяется при изменении языка. tbObjects.Text = TranslationSource.Instance ["Var1"]; –
В этом случае было бы полезно, если бы вы включили в свой код «TextBox», - на данный момент мы можем видеть только «ComboBox». – Grx70
Я добавил «TextBox» –