나는 Thumb
은 그래서 (간결하게 잘립니다) 상속 클래스가 있습니다업데이트 된 ControlTemplate의 컨트롤 텍스트
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ControlTemplate x:Key="MyControlTemplate">
<Border BorderBrush="Black" BorderThickness="1" Name="border">
<StackPanel>
<StackPanel.Background>
<SolidColorBrush Color="White" Opacity="1"/>
</StackPanel.Background>
<TextBlock Name="controlType" Padding="5,0,5,3" HorizontalAlignment="Stretch" TextAlignment="Center">
<TextBlock.Background>
<SolidColorBrush Color="#FFC0C0C0" Opacity="1"/>
</TextBlock.Background>
</TextBlock>
</StackPanel>
</Border>
</ControlTemplate>
:
public class MyControl : Thumb
{
public MyControl()
: base()
{
this.MinWidth = 80;
this.MinHeight = 60;
/* ... */
}
}
나는 아래처럼 보이는 ControlTemplate이 있습니다를
MyControl
의 인스턴스를 다른 클래스로 인스턴스화하고 Text
속성을로 설정하려고합니다.템플릿의 TextBlock 컨트롤.
public System.Windows.UIElement Create()
{
MyControl control = new MyControl();
var template = Application.Current.Resources["MyControlTemplate"] as ControlTemplate;
var contents = template.LoadContent();
var panel = (StackPanel)VisualTreeHelper.GetChild(contents, 0);
foreach (var textBlock in panel.Children.OfType<TextBlock>())
{
switch (textBlock.Name)
{
case "controlType":
textBlock.Text = "MyText";
textBlock.InvalidateVisual();
break;
}
}
control.Template = template;
control.UpdateLayout();
return control;
}
그러나 텍스트 "MyText"는 TextBlock에 표시되지 않습니다. 내가 뭘 놓치고 있니?
, 다운 투표 누구든지 당신이 왜 그랬는지 의문의 소유자에게 알려 : 당신은
MyControl
의 인스턴스에 적용된TextBlock
의Text
속성을 설정합니다. 비참한 삶을 살기 때문에 단순히 투표를 할 수는 없습니다. – Josh