Silverlight 使用域数据源将数据绑定到文本块

Silverlight 使用域数据源将数据绑定到文本块,silverlight,binding,stackpanel,Silverlight,Binding,Stackpanel,我有一个每个州的热点地图(在Expression Blend中完成)。我捕获该州的每个鼠标指针(1到50)。我将其传递到我的域数据源: Dim activebox As Path = TryCast(sender, Path) activebox.Fill = mouseOverColor Dim StateID As Integer = CInt(Right(activebox.Name, 2)) Dim _StateContext As New State

我有一个每个州的热点地图(在Expression Blend中完成)。我捕获该州的每个鼠标指针(1到50)。我将其传递到我的域数据源:

    Dim activebox As Path = TryCast(sender, Path)
    activebox.Fill = mouseOverColor
    Dim StateID As Integer = CInt(Right(activebox.Name, 2))

     Dim _StateContext As New StateContext
     myDataGrid.ItemsSource = _StateContext.States
    _StateContext.Load(_StateContext.GetStateByStateIDQuery(StateID.Text))
上述方法适用于datagrid、listbox甚至dataform

但我创建了一个带有文本块的stackpanel弹出窗口

    popupStatesBox.DataContext = ??????????????
    popupStatesBox.IsOpen = True   'popup does open but has no data
--popustatesbox.xaml



假设您已经在上下文中加载了States集合,那么这可能就是您想要的:-

 popupStatsBox.DataContext = _StateContext.States.FirstOrDefault(Function(s) s.StateID = StateID)
请注意,将数据编码到元素名称中不是一种好的做法,请查看创建附加属性并将状态ID存储为每个路径的附加属性

老实说,我很想创建一个从
选择器派生的自定义控件来创建StatesSelector控件

您可以将ItemsSource属性绑定到States集合。当鼠标移动时 关于将ItemsSource中的适当项目分配给
SelectedItem
属性


然而,这可能有点太过分了

您的工作示例是什么样的?我很想知道你将如何使用列表框来代替弹出窗口。当然州集合已经有你需要的州数据了?谢谢Anthony。它几乎像我预期的那样工作。在mouseenter上加载数据似乎有延迟。当我用鼠标输入一个图像并传递一个数值时,弹出窗口将不显示数据。如果我将鼠标移出,然后再次将鼠标插入,弹出窗口将显示数据。顺便说一句,您提到“老实说,我很想创建一个从选择器派生的自定义控件来创建StateSelector控件。”我在哪里可以找到有关“…自定义控件…”的更多信息?
 popupStatsBox.DataContext = _StateContext.States.FirstOrDefault(Function(s) s.StateID = StateID)