将控件分配给XAML中的属性

时间:2012-10-23 07:49:04

标签: wpf xaml collections controls

Hej all,

我想知道是否可以为XAML中的属性分配多个控件。

假设我的XAML中有2个控件:

<Button x:Name="_Btn1 Content="Button 1" />
<Button x:Name="_Btn2 Content="Button 2" />

<local:MyControl x:Name="_MyCtrl" Controls="{what goes here?}" />

或者我应该将我的控件声明为容器控件并将所有控件放在其中,如下所示:

<local:MyControl x:Name="_MyCtrl">
    <Button x:Name="_Btn1 Content="Button 1" />
    <Button x:Name="_Btn2 Content="Button 2" />
</local:MyControl>

Thnx提前!

Grtz, DWI

3 个答案:

答案 0 :(得分:0)

如果你让 MyControl 继承 ItemsControl ,你可以这样做。

然后这个

<local:MyControl x:Name="_MyCtrl">
   <Button x:Name="_Btn1 Content="Button 1" />
    <Button x:Name="_Btn2 Content="Button 2" />
</local:MyControl>

将起作用,

<local:MyControl x:Name="_MyCtrl" ItemsSource="ViewModelorControlCollection" />

也会奏效。

ViewModelorControlCollection可以在ViewModel中定义,也可以在xaml中定义为静态资源。

答案 1 :(得分:0)

这真的取决于你要做什么。通常,您只需定义一个DataTemplate

<local:MyControl x:Name="_MyCtrl">
    <local:MyControl.ControlsTemplate>
        <DataTemplate>
            <StackPanel>
                <Button x:Name="btn1" Content="Button 1" />
                <Button x:Name="btn2" Content="Button 2" />
            </StackPanel>
        </DataTemplate>
    </local:MyControl.ControlsTemplate>
</local:MyControl>

答案 2 :(得分:0)

你肯定需要某种容器。这可以是一个简单的列表或专门的集合。无论你在控制中使用什么。

<local:MyControl>
    <local:MyControl.Controls>
        <ControlCollection> <!-- or whatever -->
            <Button/>
            <Button/>
        </ControlCollection>
    </local:MyControl.Controls>
</local:MyControl>

如果您使用Panel或类似的类,则无需明确指定ControlCollection。然后,您可以定义控件,例如StackPanel