1
내 창에 특정 종류의 TabItem이 어떻게 나타나야하는지 선언하는 다음 리소스가 있습니다.컨트롤에 동적으로 할당 된 요소에 XAML 리소스 형태로 액세스하려면 어떻게합니까?
<Window.Resources>
<StackPanel x:Key="TabSearchContents" x:Shared="False"
Orientation="Vertical">
<Border
BorderThickness="3"
BorderBrush="Purple">
<TextBlock
Text="SEARCH BOOKS"
FontFamily="Verdana"
FontSize="25"
Foreground="Blue"
HorizontalAlignment="Center" />
</Border>
<StackPanel
Height="30"
Orientation="Horizontal"
Margin="5">
<TextBox
x:Name="txtSearch"
Width="650"
FontFamily="Comic Sans MS"
Foreground="Chocolate" />
<Button
x:Name="btnSearch"
Width="100"
Content="Go!"
Click="BtnSearch_Click" />
</StackPanel>
<Grid x:Name="gridResults">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="450"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
<ItemsControl x:Name="itmsSearch" ItemsSource="{Binding}" Padding="4"
ItemTemplate="{StaticResource SearchResultItemDT}">
</ItemsControl>
</ScrollViewer>
<StackPanel x:Name="stkpnlDetails">
</StackPanel>
</Grid>
</StackPanel>
</Window.Resources>
내 코드 숨김에서 동적으로 탭을 만들고 이미 내 창에있는 TabControl에 할당합니다.
void BtnNewTab_Click(object sender, RoutedEventArgs e)
{
TabItem tb = new TabItem();
tb.Content = this.Resources["TabSearchContents"];
tb.DataContext = _bridge.SearchBooksByTitle("e");
tb.Header = "Wuttp yo!";
Button btnGo = ((Button)tb.FindName("btnSearch"));
ItemsControl i = (ItemsControl)tb.FindName("itmsSearch");
btnGo.Resources.Add("ResultList", i);
daTabs.Items.Add(tb);
tb.Focus();
}
내 XAML 리소스에 선언 된 btnSearch 단추에 액세스하려고합니다.
그렇기 때문에 FindName()을 통해 예상 된 컨트롤을 찾을 수 없기 때문에 btnGo가 null (i와 마찬가지로)이기 때문에이 코드는 예외를 throw합니다.
RegisterName() 메서드에 대해 읽었지만 필요한 컨트롤의 인스턴스에 대한 참조가 필요합니다.
내가 코드를 통해 새로운 버튼을 생성하고 싶지 않아요. 이미 리소스의 스택 패널에 선언 된 버튼이 있습니다. 이전에 정의 된 버튼에 대한 참조를 얻고 싶습니다. – ForeverLearnNeverMaster