当前位置:编程学习 > C#/ASP.NET >>

WPF xaml中Style设置值的StaticResource的问题


        <Canvas.Resources>
            <ImageBrush x:Key="myImageBrush1" ImageSource="/myEdit;component/Images/btn1.ico"/>
            <ImageBrush x:Key="myImageBrush2" ImageSource="/myEdit;component/Images/btn2.ico"/>
            <ImageBrush x:Key="myImageBrush3" ImageSource="/myEdit;component/Images/btn3.ico"/>
            <ImageBrush x:Key="myImageBrush4" ImageSource="/myEdit;component/Images/btn4.ico"/>
            <Style x:Key="myStyle" TargetType="{x:Type Button}">
                <Setter Property="Border.Background" Value="{StaticResource ?????}"/>                
            </Style>
        </Canvas.Resources>
            <Button x:Key="btn1" Content="btn1" Style="{StaticResource myStyle}" />
            <Button x:Key="btn2" Content="btn2" Style="{StaticResource myStyle}" />
            <Button x:Key="btn3" Content="btn3" Style="{StaticResource myStyle}" />
            <Button x:Key="btn4" Content="btn4" Style="{StaticResource myStyle}" />

?????处应该如何写才能让btn1应用btn1.ico背景,btn2应用btn2.ico背景? --------------------编程问答-------------------- 用控件模板试试。

<ControlTemplate x:Key="Btn1" TargetType="{x:Type Button}">
<Grid>
      <Image x:Name="bg_pic" Source="btn1.ico" Stretch="Uniform"/>
      <Border>
              <ContentPresenter Content="{TemplateBinding Content}"/>
      </Border>
</Grid>
</ControlTemplate>
<Button x:Key="btn1" Content="btn1" Template="{StaticResource Btn1}"" />
--------------------编程问答-------------------- 模版和style一样吧,还是不会····
能不能在xaml中使用数组啊···· --------------------编程问答-------------------- XAML是类似XML的扩展标记语言,无法使用数组的。
控件模板的作用是针对控件进行自定义定制,引用了该模板的控件将会根据该定制进行模板实例化,包括外观以及内部的控件排布等等。具体可以参考MSDN。
而style只能配置控件的显示外观。 --------------------编程问答-------------------- 其实直接设置每一个按钮的background就可以,用一个binding + converter

另一种方法如下:
        <Canvas.Resources>
            <Style x:Key="myStyle" TargetType="{x:Type Button}">
                <Setter Property="Background">
                    <Setter.Value>
                        <ImageBrush ImageSource="{Binding Path=Tag,RelativeSource={RelativeSource TemplatedParent}}"></ImageBrush>
                    </Setter.Value>
                </Setter>
            </Style>
        </Canvas.Resources>
        <!-- 把下面的1.gif替换成你的文件-->
        <Button Name="btn1" Content="btn1" Style="{StaticResource myStyle}" Tag="1.gif"/>
        <Button Name="btn2" Content="btn2" Style="{StaticResource myStyle}" Tag="1.gif"/>
        <Button Name="btn3" Content="btn3" Style="{StaticResource myStyle}" Tag="1.gif"/>
        <Button Name="btn4" Content="btn4" Style="{StaticResource myStyle}" Tag="1.gif"/>
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,