0

これは奇妙な要求のように聞こえるかもしれませんが、実際に可能かどうかはわかりませんが、"Page 1 of X" と表示されている Silverlight DataPager コントロールがあり、"Page" テキストを変更して別のことを言いたいと考えています。

これはできますか?

4

1 に答える 1

0

DataPager スタイルには、CurrentPagePrefixTextBlock という名前のパーツがあり、デフォルトでその値は「Page」です。詳細については、http://msdn.microsoft.com/en-us/library/dd894495( v=vs.95 ).aspx を参照してください。

解決策の 1 つは、DataPager を拡張することです。

これを行うコードは次のとおりです

public class CustomDataPager:DataPager
{
    public static readonly DependencyProperty NewTextProperty = DependencyProperty.Register(
    "NewText",
    typeof(string),
    typeof(CustomDataPager),
    new PropertyMetadata(OnNewTextPropertyChanged));

    private static void OnNewTextPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
        var newValue = (string)e.NewValue;
        if ((sender as CustomDataPager).CustomCurrentPagePrefixTextBlock != null)
        {
            (sender as CustomDataPager).CustomCurrentPagePrefixTextBlock.Text = newValue;
        }
    }

    public string NewText
    {
        get { return (string)GetValue(NewTextProperty); }
        set { SetValue(NewTextProperty, value); }
    }

    private TextBlock _customCurrentPagePrefixTextBlock;
    internal TextBlock CustomCurrentPagePrefixTextBlock
    {
        get
        {
            return _customCurrentPagePrefixTextBlock;
        }
        private set
        {
            _customCurrentPagePrefixTextBlock = value;
        }
    }

    public CustomDataPager() 
    {
        this.DefaultStyleKey = typeof(DataPager);
    }

    public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        CustomCurrentPagePrefixTextBlock = GetTemplateChild("CurrentPagePrefixTextBlock") as TextBlock;
        if (NewText != null)
        {
            CustomCurrentPagePrefixTextBlock.Text = NewText;
        }
    }  

}

この CustomDataPager で NewText プロパティを設定することにより、「ページ」の代わりに必要なテキストを取得できます。

xmlns:local="clr-namespace:CustomDataPager を含むアセンブリ"

<local:CustomDataPager x:Name="dataPager1" 
                        PageSize="5"
                        AutoEllipsis="True"
                        NumericButtonCount="3"
                        DisplayMode="PreviousNext"
                        IsTotalItemCountFixed="True" NewText="My Text" />

「ページ」ではなく「マイ テキスト」が表示されるようになりました。
ただし、これを正しく機能させるには、他の部分もカスタマイズする必要があります!!
これがあなたの質問に答えることを願っています

于 2012-10-18T11:44:32.167 に答える