Растяжка панели инструментов в тулбарте codebehind и xaml - PullRequest
0 голосов
/ 09 марта 2012

Мне нужен следующий фрагмент кода xaml в cs (код файла)

<ToolBarTray Width="450" IsLocked="True" >
<ToolBar Width="{Binding ActualWidth,     
RelativeSource={RelativeSource FindAncestor,     
AncestorType={x:Type ToolBarTray}}}">
<Button>B1</Button>
<Button>B2</Button>
</ToolBar>
</ToolBarTray>

1 Ответ

0 голосов
/ 09 марта 2012

Если вы действительно намереваетесь использовать этот код в коде, то приведенный ниже фрагмент кода может подойти.Однако он не будет работать, если вы хотите создать шаблон данных из кода.В этом случае вам нужно использовать производные типы FrameworkElementFactory, а не производные типы FrameoworkElement.

public ToolBarTray CreatetoolBarTray()
    {
        var tbt = new ToolBarTray
                      {
                          Width = 450.0,
                          IsLocked = true
                      };
        var tb = new ToolBar();
        var b = new Binding
                    {
                        Path = new PropertyPath("ActualWidth"),
                        Source = new RelativeSource(RelativeSourceMode.FindAncestor, typeof (ToolBarTray), 1),
                    };
        tb.SetBinding(WidthProperty, b);

        tb.Items.Add(new Button() {Content = "b1"});
        tb.Items.Add(new Button() {Content = "b2"});

        tbt.ToolBars.Add(tb);

        return tbt;
    }
...