의도 한대로 도구 설명을 사용하고 싶습니다. 그러나 오류가 발생하면 오류 메시지가 표시되도록 변경 한 다음 오류가 수정되면 다시 변경합니다.WPF에서 도구 설명에 대한 연결된 속성을 만듭니다.
그래서 툴팁을 보유 할 첨부 속성을 만들었습니다. 첨부 된 속성에 툴팁을 할당 한 다음 스타일을 사용하여 툴팁 속성에 복사합니다. 오류가있는 경우 스타일은 도구 설명을 오류 메시지로 설정합니다. 툴팁 오류 메시지를 설정하는
그래서 트리거는 다음과 같습니다
오류가 수정 될 때, 나는 다시 설정 매우 쉽게 보인다 (및 작동)
<Trigger Property="Validation.HasError"
Value="true">
<Setter Property="BorderBrush"
Value="{DynamicResource controls-errorBorderBrush}" />
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
(이 '아무튼 t 일) :
<Trigger Property="Validation.HasError"
Value="false">
<Setter Property="ToolTip"
Value="{Binding Path=(wpfMisc:myCtrl.tooltipValue)}" />
</Trigger>
그리고 XAML 파일에
내가 가진 :<TextBox Text="this is a textbox with a myMisc based tooltip"
Name="txtTooltip2"
wpfMisc:myCtrl.tooltipValue="Tooltip Test tooltip" />
물론 정보가 올바르게 저장되지 않는 것처럼 보이는 문제는 내 연결된 속성에서 발생할 가능성이 큽니다. 여기에 그 코드는 다음과 같습니다
public static string GettooltipValue(DependencyObject obj)
{
string value = obj.GetValue(tooltipValueProperty).ToString() ;
value = value.trimNull() ; // extension method to insure at least an empty string
return value ;
}
public static void SettooltipValue(DependencyObject obj, string value)
{
obj.SetValue(tooltipValueProperty, value.trimNull());
}
public static readonly DependencyProperty tooltipValueProperty =
DependencyProperty.RegisterAttached("tooltipValue",
typeof(string),
typeof(myCtrl),
new UIPropertyMetadata(string.Empty));
그래서 내 생각 엔 내가 UIPropertyMetaData 다른 뭔가를 사용해야한다는 것입니다,하지만 난 사용하는 것이 무엇인지 확실하지. 아니면 내 접근 방식이 틀렸어?
모든 데이터 필드에 대해 특정 도구 설명이 필요합니다.
오류가 발생하는 동안 툴팁을 태그 속성으로 옮겨서이 작업을 수행했지만, 다른 코드가이 코드를 사용하려고 할 때 문제가 발생한다는 것을 알고 있기 때문에이를 그대로두고 싶지 않았습니다. 태그를 사용하는 것이 좋습니다.
... 디버깅 단지 부작용 및 myCtrl의 다른 종속성 속성은 잘 작동, 그래서 참조는 등의 XMLNS 알 -
또한, 나는 코드의 일부는 자세한 것을 알고 옳은.
추가 조사에서 출력 창에서 다음을 찾았습니다. System.Windows.Data 오류 : 17 : ''(type 'layoutSettingsViewModel')에서 'tooltipValue'값 (type 'String')을 가져올 수 없습니다. BindingExpression : Path = (0); DataItem = 'layoutSettingsViewModel'(HashCode = 46457861); 대상 요소가 'TextBox'(Name = ''); 대상 속성 'ToolTip'('Object'형식) InvalidCastException : 'System.InvalidCastException : 형식'client.Models.layoutSettings.layoutSettingsViewModel '형식의 개체를'System.Windows.DependencyObject '입력 할 수 없습니다.
layoutSettingsViewModel은 xaml보기입니다. 그래서 뷰 자체가 어떻게 든 컨트롤 대신 가치를 얻고 있다고 생각합니다. 확실하지 않습니다. 여러분 중 하나가 정확히 무엇을 의미하고 있는지, 그리고 왜 ... 정확히 알고 있는지 추측합니다. 속도를 높이려고하는 것이 싫습니다. 새로운 언어 ...
어쨌든, 어떤 도움이나 제안을 부탁드립니다.
당신은 때 검증 출력 창에있는 바인딩 오류를 얻고있다 HasError가 false로 설정 되었습니까? 어떻게 그리고 어디에서 wpfMisc : myCtrl.tooltipValue를 설정하고 있습니까? 또한 이러한 트리거를 적용하는 컨트롤을 공유 할 수 있습니까? – Nitin
2 개의 것들부터 시작할 것입니다. 먼저 obj.GetValue wpf (C#)가 연결된 속성 코드를 최적화 할 수 있으므로 다른 모든 코드가 필요하지 않으며 일반적으로 기본 구현이 될 것으로 예상됩니다. (다만 확실한) 두 번째로 dp에 대한 콜백을 추가하고 실제로 값이 변경되면 언제, 무엇을 제외하고 나에게 무슨 일이 일어나는지 알려주세요. –
nit, 나는 코드를 가지고 있었지만, 어떤 이유로 든 보이지 않았다. 지금이야. 그리고 나는 데이터 입력 컨트롤과 함께 사용하기를 원할지라도 간단한 텍스트 상자로 테스트 해왔다. – JustMeToo