1
工作,我有以下XAML:的DataTemplate數據觸發只能從第二次
<Grid x:Name="root">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.Resources>
<DataTemplate DataType="{x:Type ViewModels:TemplateViewModel}">
<ContentControl Content="{Binding}" Grid.Row="0" x:Name="ct">
<ContentControl.ContentTemplate>
<DataTemplate>
<TextBlock Text="Loaded" />
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding DataContext.State,
RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="2">
<Setter Property="ContentTemplate" TargetName="ct">
<Setter.Value>
<DataTemplate>
<TextBlock Text="Loading, please wait" Foreground="Red"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Grid.Resources>
<ContentControl Content="{Binding MainContent}" />
這XAML是一個窗口元素中。我在窗口綁定到一個ViewModel對象具有兩個屬性,狀態和搜索Maincontent:
public class ViewModel : INotifyPropertyChanged {
public int State {...} // this can be only 1 or 2, for simplicity
public TemplateViewModel MainContent { ... }
}
我相應地從屬性setter提高PropertyChanged事件。
現在,用一個按鈕從磁盤加載文件,解析它並創建一個對象來分配給MainContent屬性。在解析之前,我將State屬性設置爲2(加載),分配後我將屬性重置爲1(加載)。
我第一次解析文件時,數據模板中的觸發器不起作用(注意觸發器綁定到父窗口的Data Context的State屬性,即ViewModel對象)。但第二次,它呢!
有人可以指出錯誤在哪裏嗎?
我怕我不能在這裏發佈的代碼,但如果你有一個答案,並給我一個電子郵件可以分享它..
解決它使用樣式和觸發器,但仍然想知道有什麼區別 – 2009-02-27 17:16:08