作成日: 2017/07/03 最終更新日: 2017/07/03
文書種別
不具合
状況
回避方法あり
詳細
C1DockControlを二つ並べて表示した場合、両方のタブのヘッダーを変更しても、共通のタイトルバーのタイトルが変更されません。
回避方法
下記サンプルコードのように、ビジュアルツリーを横断して、要素のテキストを変更します。
◎サンプルコード(VB)
◎サンプルコード(C#)
◎サンプルコード(VB)
Dim winds As List(Of WPFWindow) = New List(Of WPFWindow)()
Private Sub C1DockControl_ItemDockModeChanged(sender As Object, e As C1.WPF.Docking.ItemDockModeChangedEventArgs)
winds.Clear()
For Each wind In Application.Current.Windows
If TypeOf wind Is WPFWindow Then
winds.Add(CType(wind, WPFWindow))
End If
Next
End Sub
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
Dim oldName As String = CStr(A_Tab.Header)
A_Tab.Header = "NewName"
For Each wind In winds
If CStr(wind.Content) = oldName And AATab.IsSelected Then
Dim bdr As Border = CType(VTreeHelper.GetParentOfType(AATab, GetType(Border)), Border)
Dim g As Grid = CType(bdr.Parent, Grid)
g = CType(g.Parent, Grid)
bdr = CType(g.Children(1), Border)
g = CType(bdr.Child, Grid)
Dim cc As ContentControl = CType(g.Children(0), ContentControl)
Dim cp As ContentPresenter = CType(VisualTreeHelper.GetChild(cc, 0), ContentPresenter)
Dim tb As TextBlock = CType(VisualTreeHelper.GetChild(cp, 0), TextBlock)
tb.Text = CStr(A_Tab.Header)
End If
Next
End Sub
Private Sub C1DockControl_ItemDockModeChanged(sender As Object, e As C1.WPF.Docking.ItemDockModeChangedEventArgs)
winds.Clear()
For Each wind In Application.Current.Windows
If TypeOf wind Is WPFWindow Then
winds.Add(CType(wind, WPFWindow))
End If
Next
End Sub
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
Dim oldName As String = CStr(A_Tab.Header)
A_Tab.Header = "NewName"
For Each wind In winds
If CStr(wind.Content) = oldName And AATab.IsSelected Then
Dim bdr As Border = CType(VTreeHelper.GetParentOfType(AATab, GetType(Border)), Border)
Dim g As Grid = CType(bdr.Parent, Grid)
g = CType(g.Parent, Grid)
bdr = CType(g.Children(1), Border)
g = CType(bdr.Child, Grid)
Dim cc As ContentControl = CType(g.Children(0), ContentControl)
Dim cp As ContentPresenter = CType(VisualTreeHelper.GetChild(cc, 0), ContentPresenter)
Dim tb As TextBlock = CType(VisualTreeHelper.GetChild(cp, 0), TextBlock)
tb.Text = CStr(A_Tab.Header)
End If
Next
End Sub
◎サンプルコード(C#)
List winds = new List();
private void C1DockControl_ItemDockModeChanged(object sender, C1.WPF.Docking.ItemDockModeChangedEventArgs e)
{
winds.Clear();
foreach (var window in Application.Current.Windows)
{
if (window is WPFWindow)
{
winds.Add((WPFWindow)window);
}
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
string oldName = (string)A_Tab.Header;
A_Tab.Header = "NewName";
foreach (WPFWindow wind in winds)
{
if ((string)wind.Content == oldName && AATab.IsSelected)
{
Border bdr = (Border)VTreeHelper.GetParentOfType(AATab, typeof(Border));
Grid g = (Grid)bdr.Parent;
g = (Grid)g.Parent;
bdr = (Border)g.Children[1];
g = (Grid)bdr.Child;
ContentControl cc = (ContentControl)g.Children[0];
ContentPresenter cp = (ContentPresenter)VisualTreeHelper.GetChild(cc, 0);
TextBlock tb = (TextBlock)VisualTreeHelper.GetChild(cp, 0);
tb.Text = (string)A_Tab.Header;
}
}
}
private void C1DockControl_ItemDockModeChanged(object sender, C1.WPF.Docking.ItemDockModeChangedEventArgs e)
{
winds.Clear();
foreach (var window in Application.Current.Windows)
{
if (window is WPFWindow)
{
winds.Add((WPFWindow)window);
}
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
string oldName = (string)A_Tab.Header;
A_Tab.Header = "NewName";
foreach (WPFWindow wind in winds)
{
if ((string)wind.Content == oldName && AATab.IsSelected)
{
Border bdr = (Border)VTreeHelper.GetParentOfType(AATab, typeof(Border));
Grid g = (Grid)bdr.Parent;
g = (Grid)g.Parent;
bdr = (Border)g.Children[1];
g = (Grid)bdr.Child;
ContentControl cc = (ContentControl)g.Children[0];
ContentPresenter cp = (ContentPresenter)VisualTreeHelper.GetChild(cc, 0);
TextBlock tb = (TextBlock)VisualTreeHelper.GetChild(cp, 0);
tb.Text = (string)A_Tab.Header;
}
}
}
旧文書番号
82249