【问题标题】:Assign controls to a property in XAML将控件分配给 XAML 中的属性
【发布时间】:2012-10-23 07:49:04
【问题描述】:

大家好,

我想知道是否可以将多个控件分配给 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>

提前谢谢!

格兹, 微博

【问题讨论】:

    标签: wpf xaml collections controls


    【解决方案1】:

    如果你让 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 中定义为静态资源。

    【讨论】:

      【解决方案2】:

      这真的取决于你要做什么。通常,您只需定义一个 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>
      

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-29
          • 2011-10-11
          • 2014-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-10
          • 1970-01-01
          相关资源
          最近更新 更多