Здесь не так много всего.Например, где вы устанавливаете IsButtonvisible на основе ваших критериев правила?Вот несколько идей:
1) Не создавайте вспомогательное поле для IsButtonVisible.Вместо этого пусть он вернет правильный анализ.
public bool IsButtonVisible { get { return SelectedRuleName == "IsVisibleRule"; } }
2) Вы можете запустить событие Notify Propery Changed из любого места.В этом случае вы хотите, чтобы привязка IsButtonVisible переоценивалась при каждом изменении SelectedRuleName:
private DataTable m_selectedRuleName;
public DataTable SelectedRuleName
{
get
{
return m_selectedRuleName;
}
set
{
m_selectedRuleName = value;
base.RaisePropertyChangedEvent("SelectedRuleName");
base.RaisePropertyChangedEvent("IsButtonVisible");
}
}
3) Является ли SelectedRuleName действительно таблицей данных?Мне показалось бы странным, потому что это указывает на несколько строк.Это было бы более длинное сообщение, но я бы вообще избегал DataTable и изменил бы источник элемента ComboBox на ObservableCollection.«SelectedRuleName» будет иметь тип T (не DataTable).
4) В том же духе я нашел гораздо больший успех при использовании SelectedItem вместо SelectedValue.
Надеюсь, что это поможет.