代码之家  ›  专栏  ›  技术社区  ›  Frosty840

如何使用XAML将代码对象设置为组合框的数据源?

  •  0
  • Frosty840  · 技术社区  · 14 年前

    我已经到了尝试向UserControl添加一个组合框,并从代码中存在的集合填充它的地步。

    让我回顾一下困扰我的一些事情,希望你们能给我指出正确的方向:

    1) 没有一个[UserControlName].vb文件包含任何代码。UserControls的所有代码都存储在[UserControlName]中模型.vb文件,然后使用以下类型的代码:

    <UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:l="clr-namespace:MySolution"
    x:Class="UserControlName"
    <UserControl.Resources>
        <l:UserControlNameModel x:Key="UserControlNameModelDataSource" />
    </UserControl.Resources>
    <UserControl>
    

    我不知道为什么要这样做。思想?

    2) 我很确定我现在只需要一个静态的源代码,因为ComboBox中的项在执行期间不会改变。问题是,我能找到的所有关于这方面的文章都是关于创建XML读取器、填充datagridview和排序数据的庞大而复杂的事情。我只想声明我使用的是一个frealing列表!我已经用代码创建了一个列表。

    所以,是的,我基本上需要使用 Public Property ComboBoxLines As List(Of String)

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   user1228 user1228    14 年前

    1) XAML只是将对象图序列化为XML,并在其顶部添加一些奶油和樱桃。因此,当xaml被反序列化时,UserControlNameModel的一个新实例被实例化并添加到UserControl的Resources集合中 UserControlblahblah . 这是另一种在codebhind中执行此操作的方法,没有特殊用途。。。除了避免代码隐藏,我也喜欢这样做。

    至于为什么codebhind是空的而所有的东西都是在[control nmae]中定义的模型.vb文件是因为写这个的人使用的是M-V-VM模式。它的MVC用于WPF(MVC用于WPF绑定)。如果您不知道或不了解MVVM,只需搜索它。有很多信息。而且,代码隐藏是邪恶的。 .

    2) 很简单(抱歉,前面是C代码):

    // a static class that defines combo box values for user control x lol kthx
    public static class ComboBoxLines
    {  
      public static string[] Values = new string[]{ "One", "Two", "Three" };
    }
    

    在xaml中:

    <ComboBox 
      xmlns:src="clr-namespace:Where.ComboBoxLines.IsDefined"
      ItemsSource="{x:Static src:ComboBoxLines.Values}" />
    

    这是静态的方法。当然,您也可以使用实例,或者在[lol]中定义列表模型.vb文件并绑定到。。。

        2
  •  1
  •   Mamta D    14 年前

    你的帖子里有很多疑问。但让我来对付最顽皮的一个。要绑定到代码对象,请使用ObjectDataSource。遵循与本文类似的步骤:

    http://dotnetslackers.com/articles/wpf/Data-binding-to-CLR-objects-in-WPF.aspx

    推荐文章