在项目控制自定义按钮继承,内容没有被设置

(我使用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

回到顶部