Обновить страницу WPF - PullRequest
       1

Обновить страницу WPF

1 голос
/ 07 февраля 2012

У меня есть приложение, которое я написал для просмотра журналов из пользовательских приложений, написанных для этой компании.Я настроил его, используя Entity Model, и хотел бы динамически изменить, какую базу данных я бью (тестовую или производственную базу данных), основываясь на выборе меню.Я попытался использовать EntityConnectionStringBuilder, и он, кажется, работает без ошибок, однако я не могу получить сетку, которая отображает список приложений для обновления после изменения строки подключения к данным.(строки подключения для тестового и производственного серверов хранятся в properties.settings) Вот что я имею для переключения на тестовый сервер

try
{
  XDocument doc = XDocument.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
  var query1 = from p in doc.Descendants("connectionStrings").Descendants()
             select p;
  foreach (var child in query1)
  {
    foreach (var atr in child.Attributes())
    {
        if (atr.Name.LocalName == "name" && atr.Value == "AppsEntities")
        if (atr.NextAttribute != null && atr.NextAttribute.Name == "connectionString")
        {
            EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(atr.NextAttribute.Value);
            entityBuilder.ProviderConnectionString = Properties.Settings.Default["TestServer"].ToString();
            atr.NextAttribute.Value = entityBuilder.ToString();
        }
    }
  }
  doc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
  lblDatabase.Content = "Connected to the Test Server";
}
catch (Exception ex)
{
  MessageBox.Show("changing connection string to Test - blew up!" + ex.Message, "massive error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}

Любая помощь будет принята. Я новичок в C # и WPF, поэтомуВозможно, я не пойду об этом правильным путем.

 <telerik:RadGridView x:Name="LogApplicationGrid"
                         Width="900"
                         Height="Auto"
                         Margin="2,53,0,0"
                         HorizontalAlignment="Left"
                         VerticalAlignment="Top"
                         AutoGenerateColumns="false"
                         GridLinesVisibility="Horizontal"
                         IsReadOnly="true"
                         MouseDoubleClick="LogApplicationGrid_MouseDoubleClick"
                         ShowGroupPanel="False">
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn MaxWidth="50"
                                        DataMemberBinding="{Binding AppID}"
                                        Header="AppID"
                                        IsFilterable="False"
                                        UniqueName="appNumber" />
            <telerik:GridViewDataColumn MaxWidth="300"
                                        DataMemberBinding="{Binding AppName}"
                                        Header="Application Name" />
            <telerik:GridViewDataColumn MaxWidth="350"
                                        DataMemberBinding="{Binding AppDesc}"
                                        Header="Application Description" />
            <telerik:GridViewDataColumn MaxWidth="150"
                                        DataMemberBinding="{Binding DateCreated}"
                                        Header="Date Created"
                                        IsFilterable="False" />
            <telerik:GridViewCheckBoxColumn MaxWidth="100"
                                            DataMemberBinding="{Binding ShowInSharePoint}"
                                            Header="SharePoint"
                                            IsFilterable="False" />
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>

1 Ответ

1 голос
/ 07 февраля 2012

Свяжите свой GridView с ObservableCollection<T>, затем, чтобы обновить данные своей Grid, просто обновите коллекцию.

Используйте ObservableCollection<T> вместо List<T>, потому что он автоматически предупредит пользовательский интерфейс, что онНеобходимо обновить при изменении коллекции.

Кроме того, убедитесь, что вы связываете значение, а не устанавливаете его.Установка значения установит значение для экземпляра данных, а не для самих данных, поэтому оно не будет реагировать на изменения.

Например, это не будет обновлять пользовательский интерфейс

LogApplicationGrid = SomeCollection;
SomeCollection = GetObservableCollection();

Но это будет

var b = new Binding();
b.Source = SomeCollection;
LogApplicationGrid.SetBinding(RadGridView.ItemsSourceProperty, b);

SomeCollection = GetObservableCollection();

, и это также будет

<telerik:RadGridView ItemsSource="{Binding SomeCollection}" ... />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...