Привет, я пытаюсь привязать изображение к DataGrid, когда мышь находится в ячейке, чтобы показать изображение, но изображение может быть изменено пользователем. Это работает нормально, но если я поместил мышь в ячейку и см. изображение, затем я пытаюсь изменить изображение, которое оно мне дало по ошибке, что процессор используется ... Когда я меняю изображение, старое изображение я хочу удалить или заменить.
Я думаю, что всплывающая подсказка спасает мой источник.
Как мне освободить источник или остановить всплывающую подсказку, когда я не в ячейке.
Dimenion.XAML CODE:
<DataGrid AutoGenerateColumns="False" Height="237" Grid.Row="7" Grid.ColumnSpan="2"
HorizontalScrollBarVisibility="Hidden"
HorizontalAlignment="Left" Name="caseDimensionsGrid"
VerticalAlignment="Top"
RowEditEnding="myDataGrid_RowEditEnding"
ItemsSource="{Binding Path=SelectedCaseModel.MyCase.CaseDimensions,NotifyOnSourceUpdated=True}" LoadingRow="caseDimensionsGrid_LoadingRow" Width="1551" SelectionChanged="caseDimensionsGrid_SelectionChanged_1">
<DataGrid.Columns >
<DataGridTextColumn Binding="{Binding Index,Mode=TwoWay}" IsReadOnly="True" Header="Index"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Dimension.Name,Mode=TwoWay}" Header="Name">
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Dimension.Description,Mode=TwoWay}" Header="Description"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Dimension.DimensionSpecifier,Mode=TwoWay}" Header="Type"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Dimension.DimensionID,Mode=TwoWay}" IsReadOnly="True" Header="Unique Identifier">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip">
<Setter.Value>
<Image RenderOptions.BitmapScalingMode="Fant" Width="350" Height="350" Source="{Binding Dimension.ImageData,Mode=TwoWay}"/>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid>
Dimension.XAML.Cs код:
private void ImageEdit_Click(object sender, RoutedEventArgs e)
{
//MessageBox.Show("In Progress");
System.Windows.Forms.OpenFileDialog opendial = new System.Windows.Forms.OpenFileDialog();
opendial.InitialDirectory = @"C:\Users\Pictures";
if (opendial.ShowDialog().Equals(System.Windows.Forms.DialogResult.OK))
{
fname = opendial.FileName;
DataGridRow selected_row = (DataGridRow)caseDimensionsGrid.ItemContainerGenerator.ContainerFromIndex(caseDimensionsGrid.SelectedIndex);
DataGridCell RowColumn = caseDimensionsGrid.Columns[3].GetCellContent(selected_row).Parent as DataGridCell;
// int ui_selected = int.Parse(((TextBlock)RowColumn.Content).Text);
DataGridCell IndexColumn = caseDimensionsGrid.Columns[0].GetCellContent(selected_row).Parent as DataGridCell;
int index = int.Parse(((TextBlock)IndexColumn.Content).Text);
for (int i = 0; i < MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions.Count; i++)
{
if ((MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Index == index))
{
//MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.ImageData = "";
if (File.Exists(path_Xml_Files + @"\D" + MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.DimensionID + ".JPG"))
{
//File.Move(path_Xml_Files + @"\D" + MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.DimensionID + ".JPG", "del");
GC.Collect();
GC.WaitForPendingFinalizers();
File.Delete(path_Xml_Files + @"\D" + MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.DimensionID + ".JPG");
File.Copy(fname, path_Xml_Files + @"\D" + MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.DimensionID + ".JPG");
fname = path_Xml_Files + @"\D" + MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.DimensionID + ".JPG";
}
else
{
File.Copy(fname, path_Xml_Files + @"\D" + MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.DimensionID + ".JPG");
fname = path_Xml_Files + @"\D" + MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.DimensionID + ".JPG";
}
MainWindow.getModel().SelectedCaseModel.MyCase.CaseDimensions[i].Dimension.ImageData = fname;
break;
}
}
}
}