Mam bardzo prosty wyzwalacz DataTemplate i muszę go przechwycić z kodu, gdy jest podniesiony. Widziałem ten przykład: http://geekswithblogs.net/mrnat/archive/2007/09/20/115472.aspx, ale nie wiem, jak to zrobić z moim DataTrigger. Oto mój kod:
<GridViewColumn Header="PASS">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Name="LblWarn" Content="{Binding DescWarning}" FontSize="11" Style="{StaticResource FormLabel}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ID_Warning}" Value="1">
<Setter TargetName="LblWarn" Property="Style" Value="{StaticResource FormLabel}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Wielkie dzięki!
Odpowiedzi:
2 dla odpowiedzi № 1Nie, nie, nie ... zapomnij o tym okropnym pomyśle. Czy podałeś choćby minimalne szczegóły dotyczące tego, co masz rzeczywisty celem było, to mógłbym udzielić ci lepszej odpowiedzi. Tak jak jest i postępując według tego małego opisu, który dodałeś, wszystko, co mogę zrobić, to omówić rozsądny sposób uzyskania tego samego wyniku.
Więc najpierw twój DataTrigger
jest Binding
do ID_Warning
właściwość jakiejś klasy i reaguje, gdy wartość tej właściwości jest równa 1
. Więc zasadniczo chcesz wiedzieć, kiedy ID_Warning
właściwość ma wartość 1
. Oto sposób, w jaki należy to zrobić (w klasie, która definiuje właściwość):
public string ID_Warning
{
get { return iD_Warning; }
set
{
iD_Warning == value;
NotifyPropertyChanged("ID_Warning");
if (iD_Warning == 1)
{
DoSomethingHere();
}
}
}
Jeśli potrzebujesz dostępu do tego z modelu widoku lub innej klasy, która ma zadeklarowane jedno lub więcej wystąpień tej klasy, możesz po prostu użyć delegate
lub wydarzenie, aby przekazać informacje.