0

更新:TextBoxのスタイルをphone:PhoneApplicationPage.Resourcesタグに移動しましたが、まったく同じように動作するため、ResourceDictionaryを使用していることが問題の原因ではなく、問題の原因が何か問題があることがわかりました。私がスタイルを定義している方法。

ResourceDictionariesをいじり始めたばかりで、とても気に入っていますが、アプリケーションで使用しようとすると、すべてが機能しなくなりました。

まず、次のTextBoxを使用します。

<TextBox Grid.Column="1" 
  Grid.Row="0"
  x:Name="Value" 
  InputScope="Number"
  TextAlignment="Right"
  TextChanged="OnValueTextChanged">
  <TextBox.Style>
      <StaticResource ResourceKey="InputTextBox" />
  </TextBox.Style>
 </TextBox>

更新:XAMeLiの回答に従ってResourceDictionaryを更新しました。境界線が表示されますが、TextBoxには背景がないように見えますが、クリックしても、TextBoxがないかのように何も起こりません。次に、運が良ければ、下の境界線をクリックすると、TextBoxが小さすぎるか、境界線要素の下に隠れているかのように、数字キーボードがポップアップ表示されることに気付きました。TextBoxの高さを変更してみましたが無駄になりました。これは私を夢中にさせています。

次に、ListPickersはさらに悪化します。

<toolkit:ListPicker 
  Grid.Column="0" 
  Grid.ColumnSpan="2" 
  Grid.Row="1"
   x:Name="CategoriesPicker"
   HeaderTemplate="{StaticResource ListPickerHeaderTemplate}"
   FullModeItemTemplate="{StaticResource CategoriesPickerTemplate}"
   ExpansionMode="FullScreenOnly"
   BorderThickness="0"
   Padding="0"
   Margin="0"
   SelectionChanged="OnCategoriesPickerSelectionChanged">
   <toolkit:ListPicker.Style>
      <StaticResource ResourceKey="ListPickersStyle"/>
   </toolkit:ListPicker.Style>
</toolkit:ListPicker>

スタイルが含まれていると、私が提供しているデータもバインドされません。

ResourceDictionaryを含むファイルは次のようになります。

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit">
    <Style x:Name="InputTextBox" TargetType="TextBox">
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="Margin" Value="-12"/>
    <Setter Property="Height" Value="50"/>
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush StartPoint="0 0" EndPoint="0 1">
                <GradientStop Color="DarkGray" Offset="0"/>
                <GradientStop Color="DarkGray" Offset=".3"/>
                <GradientStop Color="LightSlateGray" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TextBox">
                    <Border
                            BorderThickness="2"   
                            Margin="15"
                            CornerRadius="3">
                        <Border.BorderBrush>
                            <LinearGradientBrush StartPoint="0 0" EndPoint="0 1">
                                <GradientStop Offset="0" Color="DarkGray"></GradientStop>
                                <GradientStop Offset="0.3" Color="DarkGray"></GradientStop>
                                <GradientStop Offset="1" Color="LightSlateGray"></GradientStop>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                        <Border
                            BorderThickness="2"
                            CornerRadius="3">
                            <Border.BorderBrush>
                                <LinearGradientBrush StartPoint="1 1" EndPoint="1 0">
                                    <GradientStop Offset="1" Color="Gray"></GradientStop>
                                    <GradientStop Offset="0.3" Color="DarkGray"></GradientStop>
                                    <GradientStop Offset="0" Color="DarkGray"></GradientStop>
                                </LinearGradientBrush>
                            </Border.BorderBrush>

                        </Border>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <Style x:Name="ListPickersStyle" TargetType="toolkit:ListPicker">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="toolkit:ListPicker">
                    <Border 
                        BorderThickness="2"
                        Padding="0"
                        Margin="10"                        
                        CornerRadius="3"
                        Background="DarkGray">
                        <Border.BorderBrush>
                            <LinearGradientBrush StartPoint="0 0" EndPoint="0 1">
                                <GradientStop Offset="0" Color="DarkGray"></GradientStop>
                                <GradientStop Offset="0.3" Color="DarkGray"></GradientStop>
                                <GradientStop Offset="1" Color="LightSlateGray"></GradientStop>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                        <Border BorderThickness="2"
                            CornerRadius="3">
                            <Border.BorderBrush>
                                <LinearGradientBrush StartPoint="1 1" EndPoint="1 0">
                                    <GradientStop Offset="1" Color="Gray"></GradientStop>
                                    <GradientStop Offset="0.3" Color="DarkGray"></GradientStop>
                                    <GradientStop Offset="0" Color="DarkGray"></GradientStop>
                                </LinearGradientBrush>
                            </Border.BorderBrush>
                            <toolkit:ListPicker
                                BorderThickness="0"
                                Padding="0"
                                Margin="0">
                                <toolkit:ListPicker.Background>
                                    <LinearGradientBrush StartPoint="0 0" EndPoint="0 1">
                                        <GradientStop Offset="0" Color="DarkGray"></GradientStop>
                                        <GradientStop Offset="0.5" Color="DarkGray"></GradientStop>
                                        <GradientStop Offset="1" Color="LightSlateGray"></GradientStop>
                                    </LinearGradientBrush>
                                </toolkit:ListPicker.Background>
                            </toolkit:ListPicker>
                        </Border>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

誰かが私に何が間違っているのか説明してください。

4

3 に答える 3

1

あなたControlTemplateの中には彼ら自身のコントロールがあります、すなわちテキストボックスのコントロールテンプレートはを保持していTextBoxます。これは、コントロールテンプレートの使用方法ではありません。BlendまたはVS11を使用して、各コントロールのデフォルトのスタイルを抽出し(新しいクリーンなソリューションで行うことをお勧めします)、外観を変更します。

于 2012-05-10T03:15:00.997 に答える
0

他のプロパティと同じようにスタイルを参照できる必要があります。例:

<TextBox Style="{StaticResource InputTextBox}"/>

そして、最初にスタイルを設定してから、オーバーライドする設定を試してください。例:

<TextBox Style="{StaticResource InputTextBox}" TextAlignment="Right" />
于 2012-05-10T01:18:02.867 に答える
0

inの代わりにx:Keyを使用する必要があります:x:NameResourceDictionary

x:Keyとx:Nameは同じ概念ではありません。x:Keyは、リソースディクショナリでのみ使用されます。x:Nameは、XAMLのすべての領域で使用されます。キー値を使用したFindName呼び出しは、キー付きリソースを取得しません。ただし、Silverlight 5は、アイテムにx:Keyが存在しない場合、リソースアイテムの代替リソースキーとしてx:Name(またはName)属性を使用できます。

また、WindowsPhoneがSilverlight5から離れるとすぐに、辞書でx:Nameを使用できなくなります。

于 2012-05-10T08:43:01.373 に答える