创建一个Button资源并在多个位置使用它

时间:2015-06-10 22:35:48

标签: c# wpf button resources

如何定义全局按钮并在 WPF 中的多个位置使用它。

这是我的按钮,我想在多个地方使用它。

<Button x:Key="Attach" Width="90" Margin="220,0,0,0" Content="Attach" Height="16" FontSize="11"/>

但我试图在App.xamlApplication.Resources

中定义它

以及MainWindow.xamlWindow.Resources内)

但我无法在 CodeBehind

中访问它
 Button button = Resources["Attach"];

我的问题是在哪里定义我的button,如果我在 CodeBehind XAML 中将其定义为正确的话。

2 个答案:

答案 0 :(得分:5)

App.xaml 中,您必须添加并定义按钮所需的样式。

<Application.Resources>
        <Style x:Key="Attach" TargetType="{x:Type Button}">
            <Setter Property="Height" Value="16" />
            <Setter Property="Width" Value="90" />
            <Setter Property="Content" Value="Attach" />
            <Setter Property="Margin" Value="220,0,0,0" />
            <Setter Property="FontSize" Value="11" />
        </Style>
</Application.Resources>

要在代码隐藏中访问它,您需要初始化一个新的样式对象,并使用您在App.xaml中创建的样式填充它。最后,只需将新样式添加到按钮的样式属性中即可。

Style style = this.FindResource("Attach") as Style;
Button.Style = style;

答案 1 :(得分:1)

在您的MainWindow.xaml

<Window.Resources>
    <HierarchicalDataTemplate 
        x:Key="TreeViewMainTemplate" 
        ItemsSource="{Binding SubTopics}">
        <Button 
            Width="90" 
            Margin="220,0,0,0" 
            Content="Attach" 
            Height="16" 
            FontSize="11" />
    </HierarchicalDataTemplate>
</Window.Resources>

使用按钮布局定义HiercharchicalDataTemplate将允许您在TreeView中将其重新用作ItemTemplate

<TreeView 
    Name="TopicTreeView" 
    ItemsSource="{Binding Topics}" 
    ItemTemplate="{StaticResource TreeViewMainTemplate}">
</TreeView>

如你所见,我正在大量使用资源和数据的绑定,因为我正在以MVVM的方式构建我的wpf / sl应用程序。这样做需要从过时的代码访问控件,可能值得为你寻找。