codeplexのWPFデータグリッドを使用しています。私はDatagridTemplateColumnを使用しており、各列のコンテンツを表示するためのデータテンプレートを作成しました。
ここで、datagridの任意のコントロールにフォーカスがあるときに、ユーザーにヘルプメッセージを表示する必要があります。このために私は装飾層を使用することを考えました。ComboBoxをロードしたイベントを使用して、そのadrornerレイヤーにアクセスしました。次に、ツールチップと同様に表示されるものを使用して、独自の装飾レイヤーを追加しました。以下はコードです。
TextBox txtBox = (TextBox)comboBox.Template.FindName("PART_EditableTextBox", comboBox);
if (txtBox == null)
return;
txtBox.ToolTip = comboBox.ToolTip;
AdornerLayer myAdornerLayer = AdornerLayer.GetAdornerLayer(txtBox);
Binding bind = new Binding("IsKeyboardFocused");
bind.Converter = new KeyToVisibilityConverter();
bind.Source = txtBox;
bind.Mode = BindingMode.OneWay;
PEAdornerControl adorner = new PEAdornerControl(txtBox);
adorner.SetBinding(PEAdornerControl.VisibilityProperty, bind);
PEAdornerレイヤーはこれです::
public class PEAdornerControl : Adorner
{
Rect rect;
// base class constructor.
public PEAdornerControl(UIElement adornedElement)
: base(adornedElement)
{ }
protected override void OnRender(DrawingContext drawingContext)
{
.....
}
}
ここで問題は次のとおりです。datagridでどのように表示されているかのスクリーンショットを添付しています。データグリッドに4行を超える場合は、問題ありません。以下はスクリーンショットです。
データグリッドの行数が少ない場合、この装飾者はデータグリッド内に入り、ユーザーには表示されません。スクリーンショットは下にあります
この装飾レイヤーをDataGridの上に配置するにはどうすればよいですか?私を助けてください !!!