在项目控制自定义按钮继承,内容没有被设置
(我使用WPF和MVVM模式)在项目控制自定义按钮继承,内容没有被设置
首先,我从Button控件创建自己的自定义按钮继承。这是因为我想这个按钮有一些附加属性:
public class RangeButton : Button {
public Rank CardARank { get; set; }
public Rank CardBRank { get; set; }
public bool IsSuited { get; set; }
public string ButtonContent { get; set; }
public RangeButton(int i, int j, bool suited)
{
CardARank = GetRankFromInt(i);
CardBRank = GetRankFromInt(j);
IsSuited = suited;
SetButtonContent();
}
public RangeButton()
{
}
private Rank GetRankFromInt(int x)
{
return (Rank) x;
}
private void SetButtonContent()
{
ButtonContent = StaticGameHelpers.GetRangeSegmentString(CardARank, CardBRank, IsSuited);
}
}
我初始化RangeButton的名单在我的视图模型,每一个它的属性被设置正确 - 我最终的169个RangeButtons列表:
public List<RangeButton> RangeButtons {
get { return _rangeButtons; }
set
{
_rangeButtons = value;
OnPropertyChanged("RangeButtons");
}
}
这是我的XAML:正在显示
<ItemsControl x:Name="itemsControl" ItemsSource="{Binding RangeButtons}"> <ItemsControl.ItemTemplate>
<DataTemplate>
<inheritedControls:RangeButton Width="70" Height="50" Margin="3">
<ContentPresenter Content="{Binding ButtonContent, RelativeSource={RelativeSource Self}}"/>
</inheritedControls:RangeButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="13" Rows="13"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
全部169按钮,但每个按钮是完全空白,没有内容。此外,宽度,高度和边距的特性被忽略,这导致我相信我的xaml存在问题,但我无法弄清楚。
我意识到有这样一些类似的问题,但没有一个使用自定义继承按钮。任何帮助非常感谢:)
回答:
感谢来自@dymanoid的一些建议,我采取了不同的方法。我放弃了从按钮控制想法中继承的全部内容,并简单地创建了一个自定义对象'RangeSegment',它可以替代我的RangeButton失败。在我的VM中,我存储了一个RangeSegments列表,并将它们用作ItemsControl的ItemsSource。然后在每个项目的Datatemplate中,我添加了一个Button,其内容属性绑定了每个RangeSegment中的属性。
以上是 在项目控制自定义按钮继承,内容没有被设置 的全部内容, 来源链接: utcz.com/qa/261999.html