一個的ButtonStyle內艾策斯文本塊文本如何從後面代碼定製的風格訪問tbRegistrationBtn.text財產?從代碼隱藏
我的按鈕是從代碼隱藏動態創建的,並被添加到父控件(stackpanel)中: 當我按下屏幕上的其他按鈕時,該按鈕被創建。
代碼隱藏:
Button newBtn = new Button();
newBtn.Width = 160;
newBtn.Height = 46;
newBtn.Style = this.FindResource("ButtonStyleRegistration") as Style;
spHorizontal.Children.Add(newBtn);
的XAML:
<Style x:Key="ButtonStyleRegistration" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="registrationButton">
<Rectangle Fill="#FF89959A" Height="Auto" RadiusY="15" RadiusX="15" Stroke="White" Width="Auto"/>
<TextBlock x:Name="tbRegistrationBtn" TextWrapping="Wrap" Text="" HorizontalAlignment="Center" Margin="7.5,14.973,0,16.84" d:LayoutOverrides="Height"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True"/>
<Trigger Property="IsDefaulted" Value="True"/>
<Trigger Property="IsMouseOver" Value="True"/>
<Trigger Property="IsPressed" Value="True"/>
<Trigger Property="IsEnabled" Value="False"/>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="FontSize" Value="10.667"/>
</Style>
任何試圖檢索一個空的錯誤文字塊的結果。 嘗試:
Style style = this.FindResource("ButtonStyleRegistration") as Style;
newBtn.Style = style;
TextBlock tb = (TextBlock)style.Resources.FindName("tbRegistrationBtn");
tb.Text = "test";
此致敬禮。
謝謝你一堆完美的作品!沒想到訪問一個簡單的控件會很複雜。 – Rakr 2012-03-15 08:44:13
@Rakr:已經有一種方法來查找模板中的控件,它被稱爲['FindName'](http://msdn.microsoft.com/en-us/library/system.windows.frameworktemplate.findname.aspx) ,人們真的很喜歡拋棄'FindVisualChild'方法,原因不明。 – 2012-03-17 04:01:27
@Rakr:另外如果有什麼事情很難做到的話,那麼你首先不會*意味着*做到這一點(在那個筆記上我會指向Silvermind的答案)。 – 2012-03-17 04:07:18