2013-10-07 5 views
0

J'ai à côté UserControl:Accéder à la propriété Setter

<UserControl 
x:Class="Test.Views.NavigationMenu" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:RTUforWindows8.Views" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignHeight="300" 
d:DesignWidth="400"> 
<UserControl.Resources> 
    <Style x:Key="HomeAppBarButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}"> 
     <Setter Property="AutomationProperties.AutomationId" Value="HomeAppBarButton"/> 
     <Setter Property="AutomationProperties.Name" Value="ewffgwefwfwefwefwe"/> 
     <Setter Property="Content" Value="&#xE10F;"/> 
    </Style> 
</UserControl.Resources> 

<StackPanel Orientation="Horizontal"> 
    <Button 
     Style="{StaticResource HomeAppBarButtonStyle}" /> 
    <Button 
     Style="{StaticResource AppBarButtonStyle}" /> 
</StackPanel> 

Et dans mon code que je veux changer le:

<Setter Property="AutomationProperties.Name" Value="ewffgwefwfwefwefwe"/> 

valeur à quelque chose, je fais:

NavigationMenu NM = new NavigationMenu(); 
     var style = (NM.Resources["HomeAppBarButtonStyle"] as Style).Setters[1]; 

Et je n'arrive pas à comprendre comment entrer est la valeur?

Comment cela pourrait-il devrait ressembler à:

enter image description here

Répondre

0

Les setters sont scellés. Même si vous les transformez en Setter pour avoir accès à la propriété Value à la place de SetterBase, vous obtiendrez une exception d'exécution lorsque vous tenterez de les modifier.

Je pense que vous pouvez trouver une solution pour faire ce que vous voulez dans ce sujet: Change a style dynamically in WPF

Questions connexes