我有一个项目,我希望能够在某些控件上提供工具提示,这些控件将包含一些控件,如textbox和datepicker。我们的想法是拥有一些有限图形的弹出窗口,但有些控件可以互动。
我知道如何向控件添加“正常”工具提示,但是当您移动时,工具提示会消失,因此我无法与其进行交互。
这可能吗?如果是这样,如果没有,有什么替代方案吗?由于
答案 0 :(得分:10)
您应该使用Popup
代替ToolTip
实施例。鼠标移过Popup
时会打开TextBox
,只要鼠标悬停在TextBox
或Popup
<TextBox Name="textBox"
Text="Popup On Mouse Over"
HorizontalAlignment="Left"/>
<Popup PlacementTarget="{Binding ElementName=textBox}"
Placement="Bottom">
<Popup.IsOpen>
<MultiBinding Mode="OneWay" Converter="{StaticResource BooleanOrConverter}">
<Binding Mode="OneWay" ElementName="textBox" Path="IsMouseOver"/>
<Binding RelativeSource="{RelativeSource Self}" Path="IsMouseOver" />
</MultiBinding>
</Popup.IsOpen>
<StackPanel>
<TextBox Text="Some Text.."/>
<DatePicker/>
</StackPanel>
</Popup>
使用BooleanOrConverter
public class BooleanOrConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
foreach (object booleanValue in values)
{
if (booleanValue is bool == false)
{
throw new ApplicationException("BooleanOrConverter only accepts boolean as datatype");
}
if ((bool)booleanValue == true)
{
return true;
}
}
return false;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
<强>更新强>
要为DataGrid
中的单元格执行此操作,您有几个选项。其中两个是在Popup
的{{1}}内添加DataTemplates
,或者您可以将其添加到DataGridTemplateColumn
。这是后来的一个例子。它将要求您在DataGridCell Template
DataGrid