如何在WP 8.1中动态应用Button的样式?

时间:2015-06-09 06:28:55

标签: c# .net xaml mvvm windows-phone-8.1

我有一个WP 8.1应用程序。我正在遵循完整的MVVM设计模式。在XAML代码中

 <Grid>
    <Canvas x:Name="gameCanvas"         
         Width="{Binding CanvasWidth, 
                 Mode=TwoWay, 
                 UpdateSourceTrigger=PropertyChanged}">
         <ItemsControl ItemsSource="{Binding Path=ButtonItems, 
                             Mode=TwoWay,                            
                             UpdateSourceTrigger=PropertyChanged}">
      <ItemsControl.ItemTemplate>
         <DataTemplate x:Name="Dta">
             <Button x:Name="newsItemBtn"
                 Height="{Binding Height}"
                 Width="{Binding Width}"
                 Style="{StaticResource ButtonStyle2}"
                 Content="{Binding Content}"
                 Command="{Binding                       
                           Path=DataContext.ButtonClickCommand,
                           ElementName=gameCanvas}"
                           CommandParameter="{Binding Content}">
             </Button>
          </DataTemplate>
       </ItemsControl.ItemTemplate>
    </ItemsControl>
 </Canvas>

但我想要的是在运行时动态分配按钮的样式。 我在GamePage.XAML.

中定义了三种按钮样式
<Style x:Key="ButtonStyle1" />
<Style x:Key="ButtonStyle2" />
<Style x:Key="ButtonStyle3" />

现在根据ViewModel上的某些值或某些属性,我想选择按钮样式 我尝试使用converter。但没有多大成功。

我知道如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

有一次,我需要做同样的事情,我只使用了一个转换器,它返回了一个命名资源:

Have a "warmup phase" of your application that does a dlsym() lookup on every function;
Use static libraries instead of shared libraries;
Set LD_BIND_NOW=1 and force the loader to do the PLT fixups at startup;
Use the "-z now" option on your linker (if you have it available).

我猜它可以通过密钥识别的资源以相同的方式工作。