これは奇妙な要求のように聞こえるかもしれませんが、実際に可能かどうかはわかりませんが、"Page 1 of X" と表示されている Silverlight DataPager コントロールがあり、"Page" テキストを変更して別のことを言いたいと考えています。
これはできますか?
これは奇妙な要求のように聞こえるかもしれませんが、実際に可能かどうかはわかりませんが、"Page 1 of X" と表示されている Silverlight DataPager コントロールがあり、"Page" テキストを変更して別のことを言いたいと考えています。
これはできますか?
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" />
「ページ」ではなく「マイ テキスト」が表示されるようになりました。
ただし、これを正しく機能させるには、他の部分もカスタマイズする必要があります!!
これがあなたの質問に答えることを願っています