绑定到ItemsSource属性上的ItemsControl中的动态资源

时间:2013-06-07 19:32:02

标签: c# wpf xaml itemscontrol

嘿我希望有人能为我回答几个问题。我怎么能确保动态更新itemsource的绑定数据?我无法将bindingsource从staticresource更改为动态资源,因为Object Binding的Source属性不是依赖项对象的依赖项属性。

对staticresource的绑定意味着什么?我认为绑定到dynamicresource意味着依赖属性会在资源发生变化时更新。

绑定到静态资源是否仅附加资源的初始值?

我的目标是根据signal_data更新signal_viewer。

<UserControl.Resources>
    <wpfExp:SignalData x:Key="signal_data" />
</UserControl.Resources>

<DockPanel x:Name ="maindockpanel"  Height ="Auto" Width ="Auto" LastChildFill="True">
  <ToolBarTray DockPanel.Dock="Top">
    <ToolBar HorizontalAlignment="Stretch" VerticalAlignment="Top">
      <Button Name="load_button" Height="20" Width="Auto" Click="Load_Button_Click">Load</Button>
      <Button Name="zoom_in_button" Click="zoom_in_button_Click">Zoom In</Button>
      <Button Name="zoom_out_button" Click="zoom_out_button_Click">Zoom Out</Button>
    </ToolBar>
  </ToolBarTray>

  <ItemsControl x:Name ="Signalviewer_Control" ItemsSource="{Binding Source = {StaticResource signal_data}, Path = list_of_signals}">
    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <wpfExp:SignalViewer Signal="{Binding}" MainText="{Binding Path = SignalName}"/>
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>

1 个答案:

答案 0 :(得分:1)

由于您提到的所有这些问题,我反对将ViewModel或数据作为Resource放在XAML中。

相反,要么在代码中分配DataContext

public SomeWindow() //Window Constructor
{
    DataContext = new SomeViewModel();
}

或使用ViewModelLocator

或使用here概述的RegisterDataTemplate方法。


无论如何,如果您想快速解决此问题,请将list_of_signalsList<T>更改为ObservableCollection<T>