ฉันต้องการเปิดใช้งานทริกเกอร์หาก ID คุณสมบัติรายการที่ถูกผูกไว้เท่ากับคุณสมบัติในการควบคุมแบบกำหนดเองของฉัน
แต่ฉันไม่สามารถใช้การผูกในทริกเกอร์ได้!
ฉันจะทำเช่นนี้ได้อย่างไร?
ฉันต้องการเปิดใช้งานทริกเกอร์หาก ID คุณสมบัติรายการที่ถูกผูกไว้เท่ากับคุณสมบัติในการควบคุมแบบกำหนดเองของฉัน
แต่ฉันไม่สามารถใช้การผูกในทริกเกอร์ได้!
ฉันจะทำเช่นนี้ได้อย่างไร?
สิ่งนี้ควรจะได้ผล:
<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
คุณสมบัติค่าของ DataTrigger ไม่มีการผูกมัดใช่ไหม
<DataTrigger Binding="{Binding BoundPropertyId}" Value="{Binding ElementName=Mine, Path=Property}" />
หากไม่ได้ผล คุณอาจต้องเชื่อมต่อกับเหตุการณ์และดำเนินการด้วยตนเองในโค้ดเบื้องหลัง