LogFile
에서 읽은 정보를 표시하려면 DataGrid
을 만들고 싶습니다. DataGrid
은 발생한 오류를 표시합니다 (LogFiles
). 그것들을 읽고 각 오류에 대해 객체를 만드는 것은 문제가되지 않습니다.C# wpf mvvm DataGrid 경로의 하이퍼 링크
이제 DataGrid
에 LogFile
경로를 추가하고 클릭 할 수있게해야합니다. 따라서 경로를 클릭하면 LogFile
이 열립니다. 나는 mvvm
패턴을 사용하므로 코드 숨김 코드는 허용되지 않습니다.
<DataGrid HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="10"
ItemsSource="{Binding Path=Errors}"
SelectionMode="Single"
SelectedItem="{Binding Mode=OneWayToSource, Path=SelectedError}"
AutoGenerateColumns="False"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="{Binding Path=Data.Texts[FaultyFileCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=FaultyFile}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[LanguageCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=Language}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[KindCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=Type}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[ErrorCodeCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=ErrorCode}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[SourcePathCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=SourcePath}" Width="Auto"/>
<DataGridTemplateColumn Header="{Binding Path=Data.Texts[LogFilePath], Source={StaticResource DataContextProxy}}" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding ElementName=ErrorDataGrid, Path=Data.CmdLogFilePathClick, Source={StaticResource DataContextProxy}}"/>
<TextBlock Text="{Binding Path=LogFilePath}"/>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
과 HyperlinkColumn
사용하여 두 번째 :
<DataGrid HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="10"
ItemsSource="{Binding Path=Errors}"
SelectionMode="Single"
SelectedItem="{Binding Mode=OneWayToSource, Path=SelectedError}"
AutoGenerateColumns="False"
IsReadOnly="True"
Name="ErrorDataGrid">
<DataGrid.Columns>
<DataGridTextColumn Header="{Binding Path=Data.Texts[FaultyFileCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=FaultyFile}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[LanguageCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=Language}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[KindCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=Type}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[ErrorCodeCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=ErrorCode}" Width="Auto"/>
<DataGridTextColumn Header="{Binding Path=Data.Texts[SourcePathCaption], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=SourcePath}" Width="Auto"/>
<DataGridHyperlink Header="{Binding Path=Data.Texts[LogFilePath], Source={StaticResource DataContextProxy}}" Binding="{Binding Path=LogFilePath}" Width="Auto">
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="{Binding Path=Data.DG_Hyperlink_Click, Source={StaticResource DataContextProxy}}"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
TemplateColumn
와
먼저 하나를
두 경우 모두 Command 또는 Handler는 지정된 경로의 파일 만 열 수 있습니다.
난 당신이 같은 명령 - 바인딩해야 할 당신이 내 문제가 많은 덕분에 어떤 도움을 내가 첫 번째 접근 방법 :
하십시오
UserControl
와하지에Window
변화를 그 안에 위치? – ClemensMVVM은 마크 업/GUI에서 비즈니스 로직을 제거하는 패턴입니다. – FakeCaleb
내 상사가 코드 숨김 코드를 작성하지 말라고 말했습니다. 생성자 만 허용됩니다. – Max