如果我在我的.xaml视图中声明了按钮内容,请执行以下操作:
<Button>
<Grid>
<TextBlock Text="Hey" />
</Grid>
</Button>
我可以使用Button.Content在我的C#代码中轻松获取它并将其转换为Grid。
但是当我通过Code添加一个带有ControlTemplate的Style然后想要获取内容时,它总是为空...
Button btn = new Button();
btn.Style = App.Current.Resources["MyStyle"] as Style;
Grid grid = btn.Content as Grid; //<-- Always null
我的风格如下:
<Style x:Name="MyStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<TextBlock Text="Hey" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
按钮在视图中正确设置样式...
答案 0 :(得分:1)
我使用以下代码获得了文本:
Grid g = VisualTreeHelper.GetChild(btn, 0) as Grid;
TextBlock t = g.Children[0] as TextBlock;
string txt = t.Text;
请注意,在创建按钮后不能使用代码(我认为当时尚未应用该样式)。您可以添加另一个按钮,在点击事件中添加代码。