0

現在、次のようなリソースをコントロールに追加できます。

Button b = new Button();
b.Resources.Add("item", currentItem);

XAMLでこれを実行したいと思います。私は次のようなものを試しました

<Button Content="Timers Overview"   Name="btnTimerOverview">
    <Button.Resources>
        <ResourceDictionary>
            <!-- not sure what to add here, or if this is even correct -->               
            <!-- I'd like to add something like a <string, string> mapping -->               
            <!-- like name="items" value="I am the current item."  --> 
        </ResourceDictionary>
    </Button.Resources>
</Button>

しかし、私はこれ以上のことはしていません。XAMLでこれを行う方法はありますか?

4

2 に答える 2

3

Button.Resourcesの下にResourceDictionaryを定義する必要はありません。

次のような任意の種類のリソースを追加できます。

<Button Content="Timers Overview"   Name="btnTimerOverview">
    <Button.Resources>
        <!--resources need a key -->
        <SolidColorBrush x:Key="fontBrush" Color="Blue" />
        <!--But styles may be key-less if they are meant to be "implicit",
            meaning they will apply to any element matching the TargetType.
            In this case, every TextBlock contained in this Button 
            will have its Foreground set to "Blue" -->
        <Style TargetType="TextBlock">
           <Setter Property="Foreground" Value="{StaticResource fontBrush}" />
        </Style>
        <!-- ... -->
        <sys:String x:Key="myString">That is a string in resources</sys:String> 
    </Button.Resources>
</Button>

次のようにsysマッピングされます:

xmlns:sys="clr-namespace:System;assembly=mscorlib"

さて、あなたはその文字列をいくつかのアプリケーションの設定/構成からロードしたいと思っていると思います。それは一定ではありません。

そのためには、少し注意
が必要です。静的に文字列を使用できるようにしてから、次の操作を実行できます。

<TextBlock Text="{x:Static local:MyStaticConfigClass.TheStaticStringIWant}" />

または、非静的オブジェクト内にあり、リソースの名前を。として使用Bindingする必要があります。IValueConverterConverterParameter

于 2012-07-12T11:25:57.903 に答える
1

これを試して:

<Window x:Class="ButtonResources.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        xmlns:system="clr-namespace:System;assembly=mscorlib" 
        >
    <Grid>
        <Button Content="Timers Overview"   Name="btnTimerOverview">
            <Button.Resources>
                <ResourceDictionary>
                    <!-- not sure what to add here, or if this is even correct -->
                    <!-- I'd like to add something like a <string, string> mapping -->
                    <!-- like name="items" value="I am the current item."  -->
                    <system:String x:Key="item1">Item 1</system:String>
                    <system:String x:Key="item2">Item 2</system:String>
                </ResourceDictionary>
            </Button.Resources>
        </Button>
    </Grid>
</Window>
于 2012-07-12T11:30:12.280 に答える