Я хочу активировать триггер, если идентификатор свойства связанных элементов равен свойству в моем пользовательском элементе управления.
Но я не могу использовать привязки в своих триггерах!
Как бы я это сделал?
Я хочу активировать триггер, если идентификатор свойства связанных элементов равен свойству в моем пользовательском элементе управления.
Но я не могу использовать привязки в своих триггерах!
Как бы я это сделал?
Это должно работать:
<DataTrigger
Value="True">
<DataTrigger.Binding>
<MultiBinding
Converter="{x:Static local:EqualityConverter.Instance}">
<Binding
Path="BoundProperty" />
<Binding
ElementName="MockCustomControl"
Path="Text" />
</MultiBinding>
</DataTrigger.Binding>
<DataTrigger.Setters>
<Setter
TargetName=" ... "
Property=" ... "
Value=" ... " />
...
...
</DataTrigger.Setters>
</DataTrigger>
И конвертер может быть примерно таким:
public class EqualityConverter : IMultiValueConverter
{
public static readonly EqualityConverter Instance = new EqualityConverter();
#region IMultiValueConverter Members
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values == null || values.Length == 0) return false;
for (int i = 1; i < values.Length; i++)
if (!values[i].Equals(values[0])) return false;
return true;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Обратите внимание, что я использовал общий преобразователь, который может сравнивать значения n, но вы можете использовать простой в соответствии с вашими потребностями.
Надеюсь это поможет.
MockCustomControl
) в визуальном дереве? Может быть, вы можете загрузить свой проект куда-нибудь (например, SkyDrive.com), чтобы я мог помочь вам в дальнейшем :)
- person mg007; 19.03.2010
Свойство value DataTrigger не принимает привязки?
<DataTrigger Binding="{Binding BoundPropertyId}" Value="{Binding ElementName=Mine, Path=Property}" />
Если это не сработает, вам может потребоваться подключиться к событию и обработать его самостоятельно в коде программной части.