如何在设计时知道用户在自定义项目控件中激活/关注哪个控件,以便显示所选项目的渲染?
我的功能类似于TabControl:
我的控制之处在于它显示了一个非常简单的顺序工作流程,并会显示面包屑代替标签。目前,我只是显示控件的第一个面板内容。我需要知道开发人员何时在XAML编辑器中有另一个活动面板来显示该面板的内容。
我目前正在使用MeasureOverride
中可用的值,但只要我在代码隐藏中有任何可用内容,它就会灵活。
我尝试过这样的黑客行为
if (System.ComponentModel.DesignerProperties.IsInDesignTool)
{
foreach (var panel in this.Panels)
{
panel.GotFocus += focusHandler;
}
}
并使用System.Windows.Input.FocusManager.GetFocusedElement()
但到目前为止还没有遇到任何运气。
答案 0 :(得分:1)
有两种方法可以解决这个问题:
最好的方法是查看WPF Designer Extensibility documenation,并了解如何实现DesignControl的DesignTime支持。
在设计时,Designer有一些机制阻止用户直接与控件交互。这就是为什么你难以确定哪个元素具有焦点。
您可以教授设计师如何通过您的控件提供自定义装饰器,以便用户可以通过装饰者与他们互动。
可供参考,TabControl可扩展性模块可在以下位置找到:
$recordCount = 0;
while(@$row_select_kat = mysql_fetch_assoc($results_select_kat))
{
if(($recordCount%3)==0)
{
echo"<div id=\"rek_poz_a\">";
modAddsDisplayHelper::wyswietlReklamyPozA();
echo"</div>";
}
$recordCount++;
}
关键想法似乎是:
C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\Design
- System.Windows.Controls.Design.dll
- System.Windows.Controls.VisualStudio.Design.dll
- System.Windows.Controls.Expression.Design.dll
列出了可以显示选择的控件类型(在这种情况下是SelectedTabItemPolicy
)TabItem
然后在选定的TabItem上调用TabItemAdornerProvider
这反过来调用:
item.get_Context()get_Services()发布(服务);
似乎带有价值字典。这里有很多兔洞需要探索。
您实际上可以回复属性表中的更改。例如SetDesignTimeIsSelected
更改后,您可以显示不同的页面。
更新日志的 更新了WPF Designer文档的链接。