2010-09-24 7 views
14

w jaki sposób programowo uzyskać dostęp do tego zasobu XAML WPF?w jaki sposób programowo uzyskać dostęp do tego zasobu XAML WPF?

<Grid.Resources> 
<Style x:Key="lineDataPointStyle" TargetType="chartingToolkit:LineDataPoint"> 
         <Setter Property="Background" Value="DarkGreen"/> 
         <Setter Property="IsTabStop" Value="False"/> 
         <Setter Property="Template" Value="{x:Null}"/> 
        </Style> 
</Grid.Resources> 

i oto kod, z którego chcę uzyskać do niego dostęp. Uwaga: Muszę programowo utworzyć linie:

// New Assoicated Graph Series 
       var lineSeries = new LineSeries(); 
       lineSeries.ItemsSource = newSeriesCollection; 
       lineSeries.IndependentValuePath = "Second"; 
       lineSeries.DependentValuePath = "Kb"; 
       lineSeries.Title = kvp.Key; 
       lineSeries.DataPointStyle = (Style) this.Resources["lineDataPointStyle"]; // ** DOES NOT WORK 

Odpowiedz

19

Nie jestem pewna ścieżki do siatki, do której odnosisz się w twoim xaml; Jednakże, biorąc pod uwagę to XAML:

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:src="clr-namespace:WpfApplication1" 
    Title="Test Application - ListView" Height="300" Width="300"> 
    <Window.Resources> 
     <src:OrderStateConverter x:Key="orderStateConverter"/> 
     <DataTemplate x:Key="checkbox"> 
      <CheckBox IsChecked="{Binding [email protected], Converter={StaticResource orderStateConverter}}" 
        Margin="0,1,1,1" > 
      </CheckBox> 
     </DataTemplate> 
     <DataTemplate x:Key="headerButton"> 
      <Button/> 
     </DataTemplate> 
    </Window.Resources> 
    <StackPanel> 
     <ListView Height="Auto" 
        Name="listView1" 
        Width="Auto" 
        ItemsSource="{Binding Source={StaticResource myXmlDatabase},XPath=Item}"> 
      <ListView.Resources> 
       <DataTemplate x:Key="checkbox2"> 
        <CheckBox IsChecked="{Binding [email protected], Converter={StaticResource orderStateConverter}}" 
        Margin="0,1,1,1" > 
        </CheckBox> 
       </DataTemplate> 
      </ListView.Resources> 
     </ListView> 
    </StackPanel> 
</Window> 

i następujący kod będzie ciągnąć zasób zarówno z Wndow i ListView:

public void SomeMethod() { 
     Object res1 = this.Resources["checkbox"]; 
     Object res2 = this.listView1.Resources["checkbox2"]; 
     return; 
    } 

W tym przypadku metoda ta jest w kodzie okiennej za klasie

5

FrameworkElement klasa ma obiekt publiczny FindResource (object resourceKey); Metoda. Użyj tej metody, aby przeszukać zasoby.

Przyczyna this.Resources["checkbox"]nie da Ci zasobów jeśli jest zdefiniowana jest hierarchia zasobów słowniki i App Zasobów Ale this.FindResource("checkbox"); będzie pracować tam.

Powiązane problemy