WPF: получить значение из пользовательского элемента управления в родительское окно - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть пользовательский элемент управления, который содержит cefsharpwpf: ChromiumWebBrowser элемент управления. этот U C загружается динамически в главное окно (в элементе управления вкладками). U C получает и устанавливает значение var Title из класса DisplayHandler , который реализует IDisplayHandler, INotifyPropertyChanged, и он отлично работает для U C. Теперь я хочу, чтобы значение Title либо из класса DisplayHandler , либо из U C в основном классе устанавливало заголовок элемента вкладки. этот код из U C и работает для заголовка Lable

<Label x:Name="title" Content="{Binding ElementName=Browser_DisplayHandler, Path=Title, TargetNullValue=TitleHere}" />
<cefsharpwpf:ChromiumWebBrowser Name="browser" Address="google.com"> 
     <cefsharpwpf:ChromiumWebBrowser.DisplayHandler>
         <local:DisplayHandler x:Name="Browser_DisplayHandler"/>
     </cefsharpwpf:ChromiumWebBrowser.DisplayHandler>
</cefsharpwpf:ChromiumWebBrowser>

, но я хочу это значение заголовка в основном классе, в котором есть шаблон данных, предназначенный для управления вкладками и текстового блока в заголовке называется txtTitle и привязывается к заголовку

<TabControl Name="tabDynamic" ItemsSource="{Binding}" SelectionChanged="tabDynamic_SelectionChanged">
            <TabControl.Resources>
                <DataTemplate x:Key="TabHeader" DataType="TabItem">
                    <DockPanel Width="200" MaxWidth="200" Height="28">
                        <Button Name="btnDelete" DockPanel.Dock="Right" Margin="5,0,0,0" Padding="0" Click="btnDelete_Click" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Name}" Width="15" Height="15">
                            <Image Source="C:\Users\Faisal\source\repos\SampleWPF\SampleWPF\delete.png" Height="13" Width="13"></Image>
                        </Button>
                        <TextBlock Name="txtTitle" Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Header}" />
                    </DockPanel>
                </DataTemplate>
                <Style TargetType="TabItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="TabItem">
                                <Border Name="Border" Margin="1,0">
                                    <ContentPresenter x:Name="ContentSite"
                                        VerticalAlignment="Center"
                                        HorizontalAlignment="Center"
                                        ContentSource="Header"
                                        Margin="7,2"/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TabControl.Resources>
</TabControl>

, если я установил tab.Header = "Tab Title"; из его основного класса, который работает, но я хочу заголовок из класса DisplayHandler

string _title;
        public string Title
        {
            get { return _title; }
            set
            {
                _title = value;
                OnPropertyChanged("Title");
            }
        }

Пожалуйста, помогите мне достичь этого, используя технику кода или Binding in WPF благодаря

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...