2010-09-24 10 views
14

¿cómo accedería a este recurso WPF XAML mediante programación?¿cómo accedería a este recurso WPF XAML mediante programación?

<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> 

y aquí está el código desde el que quiero acceder. Tenga en cuenta que necesito para crear mediante programación las líneas:

// 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 

Respuesta

19

No estoy seguro de la ruta a la red que se refieren a en su xaml; Sin embargo, dado este 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> 

y el siguiente código tirará del recurso, tanto del Wndow y el ListView:

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

En este caso, el método está en el código ventana detrás de la clase

5

FrameworkElement clase tiene objeto público FindResource (object resourceKey); método. Use este método para buscar recursos.

Causa this.Resources["checkbox"]no le ofrecerá recursos si se define una jerarquía de diccionarios de recursos y Aplicación de Recursos Pero this.FindResource("checkbox"); funcionará allí también.

Cuestiones relacionadas