Visual Studio 2013에 C#/WPF 프로젝트가 있습니다.이 프로젝트에는 하나의 기본 창과 여러 개의 팝업 창이 있습니다. 대부분의 팝업 창에는 버튼을 비롯한 컨트롤 요소가 포함되어 있습니다.# 모든 WPF Windows 찾기
모든 창에서 모든 버튼을 찾을 필요가 있습니다. 또는 실제로 모든 버튼에 "IsEnabled"속성이 바인딩되어 있는지 찾아야합니다. 그래서 아래 코드에서 모든 버튼의 "IsChangePwdEnabled"를 찾고 싶습니다.
아래 코드는 하나의 창과 하나의 버튼의 예입니다. 솔루션에 30-40 개의 창과 몇 개의 버튼이 있습니다.
이 데이터를 추출 할 수있는 해결책이 있습니까? LogicalTreeHelper.GetChildren()을 사용하여 프로그램을 초기화했지만 그 함수를 사용하여 검색해야하는 개체의 Prent를 필요로하며 창 개체가 만들어 졌기 때문에이 작업을 수행 할 필요가 없습니다. 필요할 때. 팝업 창
예 (로그온) :
<window x:Class="ManagedHMI.CLogonDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ManagedHMI"
WindowStyle="ToolWindow"
Topmost="True"
Title="Logon" SizeToContent="WidthAndHeight"
>
<Grid Margin="5,5,5,5" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
...
<Button x:Name="ChangePwd" Width="90" Click="ChangePwd_Click" IsEnabled="{Binding Path=IsChangePwdEnabled, UpdateSourceTrigger=PropertyChanged}">
코드 로그온 창 생성 : 내 프로그램에서
m_LogonDlg = new CLogonDialog(Logon, UnlockPc, ChangePassword, userDomain, m_language);
을의 "의 IsEnabled"속성이 사용됩니다 어떤 버튼에 사용자가 사용할 수있는 권한이 있는지 확인하려면이 기능을 사용하여 모든 버튼에 대해 사용자 권한을 내보내고 싶습니다.
, 바인딩의 IsEnabled에'UpdateSourceTrigger = PropertyChanged' 설정은 무의미하다. Binding은 OneWay이므로 소스를 업데이트하지 않습니다. – Clemens