Привязка изображения к ToolTip WPF C# - PullRequest
0 голосов
/ 10 марта 2020

Привет, я пытаюсь привязать изображение к 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;
                    }

                }
            }


        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...