У меня есть кнопка:
<Button Grid.Row="2" Grid.Column="0" Command="commands:Commands.BuyComponentCommand" CommandParameter="{Binding ElementName=inventory, Path=SelectedItem}" Click="btnBuy_Click">Buy</Button>
И поле со списком:
<ListBox Name="inventory" ItemsSource="{Binding Inventory}">
...
</ListBox>
И некоторые метки, которые я хочу обновить, чтобы увидеть, когда кнопка нажата;вот один из них:
<TextBlock Name="txtMineralsWarning" Foreground="Yellow" Text="You don't have enough minerals to buy this component." DataContext="{Binding ElementName=inventory, Path=SelectedItem}" Visibility="{Binding Converter={StaticResource NotEnoughMineralsToVisibilityConverter}}" TextWrapping="Wrap"/>
Теперь проблема в том, что ярлыки обновляют свою видимость, когда я выбираю другой элемент в ListBox
;однако, когда я нажимаю кнопку, они не обновляют свою видимость, хотя нажатие на кнопку может повлиять на состояние, определяющее, должны ли метки быть видны в моем конвертере.
Вот метод преобразования моего конвертера, вна случай, если это поможет:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var comp = (Component)value;
if (comp == null)
return Visibility.Hidden;
if (comp.Cost > PlayerShip.Instance.Savings)
return Visibility.Visible;
return Visibility.Hidden;
}
Есть идеи, почему мои ярлыки не становятся видимыми, когда проверенное в преобразователе условие изменяется после нажатия кнопки?Я пробовал это безрезультатно:
private void btnBuy_Click(object sender, RoutedEventArgs e)
{
txtMineralsWarning.GetBindingExpression(TextBlock.VisibilityProperty).UpdateTarget();
txtCrewWarning.GetBindingExpression(TextBlock.VisibilityProperty).UpdateTarget();
}