Search the Community
Showing results for tags 'wpf'.
-
Hi everyone During the covid lockdown i've decided to finish an old project of mine i started during my education, but never finished due it is so large and abstract, that even the teachers said 'That will never work'. Now that it soon has all the basic features it's current state, i was then wondering if it's actually relevant or not these days due technology moves so quickly. Eitherway, it was really fun to create and a pain in a..., and would sit nice on my portfolio. What i'm seeking now, is to to hear some oppinons on the solution / idea, and what also could be nice to have in such application or general workflows people seek to shorten in daily day that people miss or wished existed. Disclaimer I'm not a pro, or trying to make advertisement for the product, but general interested in the software solution, potential and ideas for improvements if any. Why did i make this software? A friend of mine had an issue at work, where he had to involve many steps and different tools, solutions, and data sources. The process was long from exporting data from different databases based on request, having different applications, filter the data recieved, combine it with some files from a client and filter it again with a script which he had to write himself, before the result came to live. I've managed to shorten this process to few minutes and saved him some work for repeatable tasks as this.. Intro video website What is this software? The software is a datamanagement tool, to merge data from different data sources together. It allows you to connect all your favorit databases in one single application and fetch data from them and combine them if not converting it inbetween the different databases. The application also support's the typical REST, SOAP (ASMX, SVC) and OData API's and soon WZDL files import. The API's has the same use-case as the database connections with few options also known from the POSTMAN if an database connection is not exposed or you simply don't want to work with an databases in general. When having all the data from either API's, and databases, files can be involved in the progress and merged with different connections to an unique export. If in doubt of files, content or verse versa, a simple comparing tool inbetween files vs files, files vs tables etc can be used. Below is an example of an export or manipulation of the data fetched from different sources. Below is also a wished result, if we want the application to write an documentation for where the data came from. Application type It's currently made in WPF, but are looking to convert it into something different in near future. Documentation & download Please see the attached file, or the website Thanks for reading. Kind regards Martin Datamergeeditor DEMO documentation.pdf
-
Started from this thread: I'm using C# and WPF to create the interface, and NvAPIWrapper to interact with NVIDIA APIs: https://github.com/tylercamp/ezgpuctl I've managed a basic MVP which can display GPU info and apply OCs with core offset, memory offset, and power target. Mostly using this thread to share info about this project, though it's still not entirely functional yet (recent commit removes OC GUI as I reorganize UI). Putting this thread up early in case someone wants to try their hand at adding support for AMD GPUs. Anyone interested can comment here, and should try getting readings and applying an OC using a local C# project before bringing anything into this. (I don't have abstractions yet to easily swap out the underlying GPU interface.) A C++ implementation works too, I can just write a C# wrapper for it. Not looking for this to become an in-depth OC tool (ie, no frequency curves), and GPU monitoring is essentially just for the user to verify the current GPU state, so don't need to get in-depth with reporting/OC capabilities. This is partly to constrain design scope, partly because NvAPIWrapper doesn't seem to have all of the NVIDIA APIs needed for more advanced stuff. For reference on what data to fetch, these are the current classes I have for managing GPU data: https://github.com/tylercamp/ezgpuctl/tree/main/GPUControl.Lib/GPU Screenshots:
- 5 replies
-
- overclocking
- open-source
-
(and 3 more)
Tagged with:
-
Hey guys just looking for feedback on my commenting. Its for a school project so just wondering if any more comments are needed or if you'd do anything different. namespace Dataset.App.Wpf { public class MainWindowViewModel : ViewModelBase { private Timer _currentTime; // Timer object to trigger every second private int _labelCount; // Count to cycling the label display public MainWindowViewModel() { StartCurrentTime(); // start timer //populate offset list for user selection var units = new List<OffsetUnit>(); foreach (OffsetUnit item in Enum.GetValues(typeof(OffsetUnit))) { units.Add(item); } OffsetUnits = units.ToList(); SelectedOffsetUnit = OffsetUnit.Hour; // Select default offset unit as Hour } /// <summary> /// Trigger when browse button is clicked /// </summary> private RelayCommand _BrowseCommand; public ICommand BrowseCommand { get { if (_BrowseCommand == null) _BrowseCommand = new RelayCommand(() => OnBrowse()); return _BrowseCommand; } } /// <summary> /// Pop open dialog windows and allow user to select dataset file /// </summary> private void OnBrowse() { try { var openFileDialog = new System.Windows.Forms.OpenFileDialog(); openFileDialog.Title = "Input file"; openFileDialog.Multiselect = false; var result = openFileDialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) // If user click okay on open dialog { using (var mystream = openFileDialog.OpenFile()) // try read if file is currently in use, will throw error if file is currently in use { if (mystream != null) FileDirectory = openFileDialog.FileName; // Set file directory to FileDirectory for display on UI } if (string.IsNullOrEmpty(FileDirectory)) // if FileDirectory is empty or null, return return; Datasets = FileFormatHelper.Parse(FileDirectory).ToObservableCollection(); //Parse directory file and assign to dataset if (Datasets.Count == 0) // if dataset parsed with zero count, throw error as file might be invalid format { throw new Exception("There is problem with parsing input file"); } foreach (var item in Datasets) //If dataset is valid, set offset unit to each set by user selected offset value { item.PopulateDates(SelectedOffsetUnit); } SelectedDataset = Datasets.FirstOrDefault(); //Select first set as default OnPlot();//trigger plot update } } catch (Exception e) // if any error above show message box { MessageBox.Show(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } /// <summary> /// Will trigger when validate button is clicked /// </summary> private RelayCommand _ValidateCommand; public ICommand ValidateCommand { get { if (_ValidateCommand == null) _ValidateCommand = new RelayCommand(() => OnValidate()); return _ValidateCommand; } } private void OnValidate() { var validatingResult = FileFormatHelper.Validate(FileDirectory); //Parse directory file and perform validation if (validatingResult.Item1) // show messagebox base on validation result { MessageBox.Show("Validation success. No missing datasets", "Success", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show("Validation Fail. " + validatingResult.Item2, "Failed", MessageBoxButton.OK, MessageBoxImage.Error); } } /// <summary> /// trigger when generate plot is clicked /// </summary> private RelayCommand _PlotCommand; public ICommand PlotCommand { get { if (_PlotCommand == null) _PlotCommand = new RelayCommand(() => OnPlot()); return _PlotCommand; } } private void OnPlot() //Plot selected dataset { PopulatePlot(SelectedDataset); } /// <summary> /// Trigger when export button is clicked /// </summary> private RelayCommand _ExportCommand; public ICommand ExportCommand { get { if (_ExportCommand == null) _ExportCommand = new RelayCommand(() => OnExport()); return _ExportCommand; } } /// <summary> /// popup savefiledialog and prompt user with export file option /// </summary> private void OnExport() { var dlg = new System.Windows.Forms.SaveFileDialog(); dlg.Title = "Export Dataset"; dlg.DefaultExt = ".txt"; dlg.Filter = "Text (*.txt)|*.txt|All files (*.*)|*.*"; //filter files by extension dlg.FileName = "Dataset"; var result = dlg.ShowDialog(); //Show dialog if (result == System.Windows.Forms.DialogResult.OK) { if (string.IsNullOrEmpty(dlg.FileName)) return; var exportText = FileFormatHelper.Export(this.Datasets.ToList()); //get export string from file format helper File.WriteAllText(dlg.FileName, exportText); //Write file Process.Start(dlg.FileName); //Open file } } /// <summary> /// trigger when exit is clicked /// </summary> private RelayCommand _ExitCommand; public ICommand ExitCommand { get { if (_ExitCommand == null) _ExitCommand = new RelayCommand(() => OnExit()); return _ExitCommand; } } private void OnExit() { System.Windows.Application.Current.Shutdown(); } /// <summary> /// Initiate timer object and refresh every 1000 millisecond /// </summary> private void StartCurrentTime() { _currentTime = new Timer(); _currentTime.Interval = 1000; // Hook up the Elapsed event for the timer. _currentTime.Elapsed += OnCurrentTimeEvent; // Have the timer fire repeated events (true is the default) _currentTime.AutoReset = true; // Start the timer _currentTime.Enabled = true; _currentTime.Start(); } /// <summary> /// Elapsed event to trigger update of current time. If dataset is loaded also update cycling of the label /// </summary> /// <param name="source"></param> /// <param name="e"></param> private void OnCurrentTimeEvent(Object source, System.Timers.ElapsedEventArgs e) { Application.Current.Dispatcher.Invoke(() => { CurrentTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); if (Datasets != null && Datasets.Count > 0) { var currentIndex = _labelCount % Datasets.Count; var dataset = Datasets[currentIndex]; DatasetTimerInfo = string.Format("Dataset: {0}, Creation Time: {1}", dataset.Title, dataset.RecordingDateTime.ToString("dd/MM/yyyy HH:mm:ss")); _labelCount++; } }); } /// <summary> /// Populating dataset plot /// </summary> /// <param name="setName">Name of dataset to plot, if missing method is return with no action</param> public void PopulatePlot(string setName) { var ds = Datasets.FirstOrDefault(x => x.Title == setName); if (ds != null) PopulatePlot(ds); } /// <summary> /// Populating dataset plot /// </summary> /// <param name="ds">dataset to plot</param> public void PopulatePlot(DatasetObject ds) { if (ds == null) return; Model = ds.GetPlotModel(SelectedPlotOption); } /// <summary> /// List of offset unit for user selection /// </summary> private List<OffsetUnit> _OffsetUnits; public List<OffsetUnit> OffsetUnits { get { return _OffsetUnits; } set { if (value == _OffsetUnits) return; _OffsetUnits = value; RaisePropertyChanged("OffsetUnits"); } } /// <summary> /// Current selection of offset unit /// </summary> private OffsetUnit _SelectedOffsetUnit; public OffsetUnit SelectedOffsetUnit { get { return _SelectedOffsetUnit; } set { if (value == _SelectedOffsetUnit) return; _SelectedOffsetUnit = value; if (Datasets != null) foreach (var item in Datasets) { item.PopulateDates(SelectedOffsetUnit); } OnPlot(); RaisePropertyChanged("SelectedOffsetUnit"); } } /// <summary> /// Current user selected plot type /// </summary> private PlotOption _SelectedPlotOption; public PlotOption SelectedPlotOption { get { return _SelectedPlotOption; } set { if (value == _SelectedPlotOption) return; _SelectedPlotOption = value; OnPlot(); RaisePropertyChanged("SelectedPlotOption"); } } /// <summary> /// Time label display on UI /// </summary> private string _CurrentTime; public string CurrentTime { get { return _CurrentTime; } set { if (value == _CurrentTime) return; _CurrentTime = value; RaisePropertyChanged("CurrentTime"); } } /// <summary> /// Plot Model to be binded with oxyplot graph /// </summary> private PlotModel _Model; public PlotModel Model { get { return _Model; } set { if (value == _Model) return; _Model = value; RaisePropertyChanged("Model"); } } /// <summary> /// Label of cycling dataset display on UI /// </summary> private string _DatasetTimerInfo; public string DatasetTimerInfo { get { return _DatasetTimerInfo; } set { if (value == _DatasetTimerInfo) return; _DatasetTimerInfo = value; RaisePropertyChanged("DatasetTimerInfo"); } } /// <summary> /// Current selection of dataset /// </summary> private DatasetObject _SelectedDataset; public DatasetObject SelectedDataset { get { return _SelectedDataset; } set { if (value == _SelectedDataset) return; _SelectedDataset = value; RaisePropertyChanged("SelectedDataset"); } } /// <summary> /// List of current imported datasets /// </summary> private ObservableCollection<DatasetObject> _Datasets; public ObservableCollection<DatasetObject> Datasets { get { return _Datasets; } set { if (value == _Datasets) return; _Datasets = value; RaisePropertyChanged("Datasets"); } } /// <summary> /// Current selected importfile directory /// </summary> private string _FileDirectory; public string FileDirectory { get { return _FileDirectory; } set { if (value == _FileDirectory) return; _FileDirectory = value; RaisePropertyChanged("FileDirectory"); } } } public class DatasetObject : ObservableObject { /// <summary> /// if filtering is enabled /// </summary> private bool _IsFiltering; public bool IsFiltering { get { return _IsFiltering; } set { if (value == _IsFiltering) return; _IsFiltering = value; RaisePropertyChanged("IsFiltering"); } } //These properties assist with filtering if filtering is perform by value instead of date /// <summary> /// Is filter by value lowerbound /// </summary> private bool _IsLowerBound; public bool IsLowerBound { get { return _IsLowerBound; } set { if (value == _IsLowerBound) return; _IsLowerBound = value; RaisePropertyChanged("IsLowerBound"); } } /// <summary> /// Is filter by value upperbound /// </summary> private bool _IsUpperBound; public bool IsUpperBound { get { return _IsUpperBound; } set { if (value == _IsUpperBound) return; _IsUpperBound = value; RaisePropertyChanged("IsUpperBound"); } } /// <summary> /// value of lower bound /// </summary> private double _LowerBoundValue; public double LowerBoundValue { get { return _LowerBoundValue; } set { if (value == _LowerBoundValue) return; _LowerBoundValue = value; RaisePropertyChanged("LowerBoundValue"); } } /// <summary> /// value of upper bound /// </summary> private double _UpperBoundValue; public double UpperBoundValue { get { return _UpperBoundValue; } set { if (value == _UpperBoundValue) return; _UpperBoundValue = value; RaisePropertyChanged("UpperBoundValue"); } } /// <summary> /// current selection of filtering date /// </summary> private DateTime _SelectedFilteredDate; public DateTime SelectedFilteredDate { get { return _SelectedFilteredDate; } set { if (value == _SelectedFilteredDate) return; _SelectedFilteredDate = value; RaisePropertyChanged("SelectedFilteredDate"); } } /// <summary> /// list of dates for user to choose filtering date /// </summary> private List<DateTime> _Dates; public List<DateTime> Dates { get { return _Dates; } set { if (value == _Dates) return; _Dates = value; RaisePropertyChanged("Dates"); } } /// <summary> /// Name of the dataset /// </summary> private string _Title; public string Title { get { return _Title; } set { if (value == _Title) return; _Title = value; RaisePropertyChanged("Title"); } } /// <summary> /// Initial recoring time /// </summary> private DateTime _RecordingDateTime; public DateTime RecordingDateTime { get { return _RecordingDateTime; } set { if (value == _RecordingDateTime) return; _RecordingDateTime = value; RaisePropertyChanged("RecordingDateTime"); } } /// <summary> /// offset value /// </summary> private double _SampleOffset; public double SampleOffset { get { return _SampleOffset; } set { if (value == _SampleOffset) return; _SampleOffset = value; RaisePropertyChanged("SampleOffset"); } } /// <summary> /// data of the set /// </summary> private List<double> _Datas; public List<double> Datas { get { return _Datas; } set { if (value == _Datas) return; _Datas = value; RaisePropertyChanged("Datas"); } } /// <summary> /// Get PlotModel to be bind to oxyplot /// </summary> /// <param name="pltOption"></param> /// <returns></returns> public PlotModel GetPlotModel(PlotOption pltOption)//, bool resetOffset { //get boundary filter by value var bound = GetBoundFilter(); if (!double.IsNaN(bound.Item2) && bound.Item1 > bound.Item2) // check if user input boundary is valid { MessageBox.Show("Lower bound cannot be greater than upper bound", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return null; } var datasTuples = ProcessLowerUpperBoundSeries(bound); //Process filter by value, not active by default datasTuples = ProcessPlotOptionSeries(datasTuples, pltOption); // Process series base on user plot type selection var tmpModel = new PlotModel { Title = Title, LegendPlacement = LegendPlacement.Outside }; //set title for plot and placement of legend var series = new LineSeries { Title = Title, MarkerType = MarkerType.Circle }; // set title for series and marker type var dateTimeAxis = new DateTimeAxis(); // set xaxis to date dateTimeAxis.Position = AxisPosition.Bottom; dateTimeAxis.Key = "dateTimeAxis"; tmpModel.Axes.Add(dateTimeAxis); // add axis object to plot for (int i = 0; i < datasTuples.Count; i++) { if (datasTuples.Item1 >= GetFilterDate()) //perform filter by date series.Points.Add(new DataPoint(DateTimeAxis.ToDouble(datasTuples.Item1), datasTuples.Item2)); //add plot point to graph } tmpModel.Series.Add(series); //add series to graph return tmpModel; } /// <summary> /// Get filtered serie /// </summary> /// <returns></returns> public List<Tuple<DateTime, double>> GetFilteredSeries() { var serie = ProcessLowerUpperBoundSeries(GetBoundFilter()); //Process filter by value, filter is not active by default return serie.Where(x=>x.Item1 >= GetFilterDate()).ToList(); // process filter by date } /// <summary> /// Perform filtering of data series with value boundary /// </summary> /// <param name="LowerUpperBound">boundary object Tuple<double,double></param> /// <returns></returns> private List<Tuple<DateTime, double>> ProcessLowerUpperBoundSeries(Tuple<double, double> LowerUpperBound) { var lowerbound = !double.IsNaN(LowerUpperBound.Item1) ? LowerUpperBound.Item1 : double.NegativeInfinity; // if lower bound not set to negative infinit var upperbound = !double.IsNaN(LowerUpperBound.Item2) ? LowerUpperBound.Item2 : double.PositiveInfinity; // if lower bound not set to positive infinit var datasTuples = new List<Tuple<DateTime, double>>(); for (int i = 0; i < Datas.Count; i++) { if (Datas >= lowerbound && Datas <= upperbound) // If data pass the bound add to list { var offsetTime = Dates; datasTuples.Add(new Tuple<DateTime, double>(offsetTime, Datas)); } } return datasTuples; // return filtered value } /// <summary> /// Processing series point based on user selection /// </summary> /// <param name="serie">Original serie</param> /// <param name="pltOption">Selected Option</param> /// <returns></returns> private List<Tuple<DateTime,double>> ProcessPlotOptionSeries(List<Tuple<DateTime,double>> serie,PlotOption pltOption) { switch (pltOption) { case PlotOption.Normal: return serie; case PlotOption.ThreePointsMovingAverage: return ThreePointMovingAverage.Process(serie); case PlotOption.WhiteNoise: return WhiteNoiseHelper.Process(serie); case PlotOption.Cumulative: return CumulativeHelper.Process(serie); default: return new List<Tuple<DateTime, double>>(); } } /// <summary> /// Calculating offset from recording date and offset index with unit of offset /// </summary> /// <param name="dt"></param> /// <param name="i"></param> /// <param name="unit"></param> /// <returns></returns> private DateTime CalculatingOffset(DateTime dt, int i, OffsetUnit unit) { switch (unit) { case OffsetUnit.Second: return dt.AddSeconds(SampleOffset * i); case OffsetUnit.Hour: return dt.AddHours(SampleOffset * i); case OffsetUnit.Day: return dt.AddDays(SampleOffset * i); case OffsetUnit.Month: return dt.AddMonths(Convert.ToInt32(SampleOffset) * i); default: return dt; } } /// <summary> /// repopulate list filter selection base on new offset unit select /// </summary> /// <param name="unit"></param> public void PopulateDates(OffsetUnit unit) { var result = new List<DateTime>(); for (int i = 0; i < Datas.Count; i++) { result.Add(CalculatingOffset(RecordingDateTime, i, unit)); } Dates = result.ToList(); SelectedFilteredDate = Dates.FirstOrDefault(); //select first of list as default } /// <summary> /// Get bound value if filter is perform by value, inactive by default /// </summary> /// <returns></returns> private Tuple<double, double> GetBoundFilter() { var lowerValue = double.NaN; var upperValue = double.NaN; if (IsFiltering) { if (IsLowerBound) lowerValue = LowerBoundValue; if (IsUpperBound) upperValue = UpperBoundValue; } return new Tuple<double, double>(lowerValue, upperValue); } /// <summary> /// Get filter date value, if not active date filter will return date minvalue /// </summary> /// <returns></returns> private DateTime GetFilterDate() { return IsFiltering ? SelectedFilteredDate : DateTime.MinValue; } } /// <summary> /// Enum for plot type selection /// </summary> public enum PlotOption { Normal, ThreePointsMovingAverage, WhiteNoise, Cumulative, } /// <summary> /// Offset unit for selection /// </summary> public enum OffsetUnit { Second, Hour, Day, Month, } }
-
Im making a WPF application using C# and i want to make a form for the user to insert a image to the application from his computer,write a description about it and save in the database.how can i do this?please try to keep your explanations simple as possible as im new to making WPF applications.Thank you
- 2 replies
-
- c++
- visual studio
-
(and 3 more)
Tagged with:
-
Ok, so I'm going to try and explain this as clearly as possible without writing a book. So we'll see how well that works out for me. Lol I'm trying to create a Lead sheet program so that we can keep track of calls that come in and which sales person it went to. I'm trying to figure out how to take this XML data and have it populate the CheckBoxes and data for the ComboBoxes automatically. Like creating a "Template" maybe, so that I show the XAML that each CheckBox should pull the information from the Service tag in the XML and then the ComboBox should get its information from the SubService tags. I have looked around online but I can't figure out what exactly I'm looking for so that doesn't help. Here's a picture of the program. An example that makes sense to me would be like: <Window> <Window.Resources> <XmlDataProvider x:Key="XMLData" Source="./Resources/Data/ProgramData.xml" XPath="/Data" IsInitialLoadEnabled="True" /> </Window.Resources> <DataTemplate> <CheckBox ItemsSource="{Binding {Source="XMLData", XPath="Services/Service/@Name"}} /> </DataTemplate> <DataTemplate> <ComboBox> <ComboBoxItem Content="{Binding {Source="XMLData", XPath="Services/Service/@Name.Value="CURRENTCHECKBOXITEMSUBSERVICE" /> </ComboBox> <!-- THIS WOULD POPULATE ALL THE COMBOBOX ITEMS FROM THE XML FILE SUBSERVICE TAGS UNDER THE CURRENT CHECKBOX ITEM --> </Window> I have the TextBoxes and everything laid out and I have the Data for the ComboBoxes in an XML file that's located at Resources/Data/ProgramData.xml with the data laid out as follows: <Data> <Users> <user id="01"> <Name>User Name</Name> <Phone>555-555-5555</Phone> <Email>someone@somewhere.com</Email> <Position>Sales</Position> <isSales>Yes</isSales> <isOffice>No</isOffice> </user> <user id="02"> <Name>User Name</Name> <Phone>666-666-6666</Phone> <Email>someone@somewhere.com</Email> <Position>Manager</Position> <isSales>No</isSales> <isOffice>Yes</isOffice> </user> </Users> <Sources> <Source Name="Radio"> <SubSource>Radio 1</SubSource> <SubSource>Radio 2</SubSource> <SubSource>Radio 3</SubSource> </Source> <Source Name="Internet"> <SubSource>Company Website</SubSource> <SubSource>FaceBook</SubSource> </Source> <Services> <Service Name="Batting"> <SubService>New Construction</SubService> <SubService>Existing Home</SubService> </Service> </Services> </Sources> </Data> The XAML for the CheckBox and ComboBox is as follows: <StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="11" Grid.ColumnSpan="3" HorizontalAlignment="Center"> <StackPanel Orientation="Vertical"> <CheckBox Content="Fiberglass Batting" Margin="0 0 10 10" /> <ComboBox Width="135" Height="25" VerticalAlignment="Center" Margin="0 0 10 0" HorizontalAlignment="Center" ToolTip="SubService"> <ComboBoxItem Content="New Construction"/> <ComboBoxItem Content="Existing Home" /> </ComboBox> </StackPanel> </StackPanel> Well so much for keeping it short... Sorry about that I am just at a loss on how to explain this really or search for it for that matter. If someone could point me to a page that will explain this to me or help me with what to search for I'd GREATLY appreciate it. Thanks! Ryan
-
Hi, i have a quick question which i couldnt find an answer for: My current WPF app has a lot of images which makes the .exe over 10mb bit (which is too big for me...) Most of those images wont be changed during updates so i would like to somehow exclude them from the .exe... I would still like to keep that stuff as a built-in resource and i dont want it to be an actual .png/.jpg/some_other_format file, i was thinking of an API approach, app downloads those images from an API but that would cause much more load on our servers since, again, i dont want to store those images in a easy to access file so no caching would be implemented ... probably Thanks ... i hope i was clear enough , if i wasnt, tell me ... please ... idk how to write this stuff ... (Im giving images as an example here, but it should work with any file that is set in Visual Studio to build with the app)
-
I'm working on a WPF app, and from what i noticed, i'm missing a lot of the WPF features and controls... I looked at the top of all my .xaml files, and all of them reference this : xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" I'm guessing that is the WPF version from all the way back from 2006 .... which is WPF 3.0 (https://www.codeproject.com/Articles/1035800/WPF-Versions-History-and-Major-Enhancements) I tried tinkering with this, seeing all of the other available options, but none of them are from a different year, all are from 2006 ... which is a bit weird, since it says that the WPF 4.6 is available in .Net 4.6 and Visual Studio 2015 ... The current project uses .Net 4.7.2 and i'm using Visual Studio 2019 Preview 4 ... I was searching around to find an answer to this, but i couldn't find any info, other than people asking how to make an updater for their apps ? My question is : How can i update the WPF version that my project uses ? (it seems to be using *3.5 SP1, but the newest one is 4.6 even tough im using .Net 4.7.2 and VS 2019) *Edit : 3.5 SP1, not 3.0, since it looks like i have stuff like the "Native splash screen" but i also dont have the "Calendar, DataGrid and Date Picker" controls, and i found that there are some schemas.microsoft.com/winfx/2008 references, although not used in the .xaml **Edit #2 : .... looks like it is 4.0, i do have Calendar and DataGrid and that stuff ... i was just blind ... Still, how can i update it to 4.6 ?
- 10 replies
-
- wpf
- visual studio
-
(and 4 more)
Tagged with:
-
Greetings Iam trying to make a Picture / Photo Viewer in WPF with Visual Basic and now iam on a Point where i Need YOUR HELP ! My Programm Looks like this : TextBox = the path of the Picture / Photo Folder Btn_Load = loads the Files from the Path into a Listbox Btn_Show = *thats the Problem* how can i make the Photos visible ? Dim Number as Integer = Listbox.items.count , gives back the amount of Pictures in the Folder now is it possible to create those Images automatic with a button ? like so : Dim Images(Number) = Image ? and then with the Child command put them in a scrollviewer or something like that ?. hopefully someone can help me.
-
Hey everybody, I don't understand this error message: "Provide value on 'System.Windows.Baml2006.TypeConverterMarkupExtension' threw an exception.' Line number '7' and line position '14'." It's a Windows Presentation Foundation (WPF) in Visual Studio using Visual Basic. Here's the code, I'm not sure I understand what's wrong: <Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.Background> <ImageBrush ImageSource="space.jpg"/> </Grid.Background> </Grid> </Window>
- 2 replies
-
- visual studio
- wpf
-
(and 1 more)
Tagged with: